它的特殊之處在於限制了這個線性表的插入和刪除的位置,它始終只在棧頂進行。這也
就使得棧底是固定的,最先進棧的只能在棧底。
棧的插入操作,叫做進棧,也成壓棧。類似子彈入彈夾
棧的刪除操作,叫做出棧,也有的叫做彈棧,退棧。如同彈夾中的子彈出夾
用陣列實現棧
#pragma once
#include
#include
#ifdef __cplusplus
extern
"c";
typedef
void
* seqstack;
//陣列高下標的位置當做棧頂,因為不需要移動陣列中的元素在插入和刪除中
//初始化
seqstack init_seqstack()
;//入棧
void
push_seqstack
(seqstack stack,
void
*data)
;//出棧
void
pop_seqstack
(seqstack stack)
;//獲得棧頂元素
void
*top_seqstack
(seqstack stack)
;//獲得棧的大小
intsize_seqstack
(seqstack stack)
;//銷毀棧
void
destroy_seqstack
(seqstack stack)
;#ifdef __cplusplus
}#endif
#include
"seqstack.h"
//初始化
seqstack init_seqstack()
//memset(stack->data, 0, sizeof(struct sstack));
stack->size =0;
for(
int i =
0; i < max;
++i)
return stack;
}//入棧
void
push_seqstack
(seqstack stack,
void
*data)if(
null
== data)
struct sstack *s =
(struct sstack *
)stack;
if(s->size == max)
s->data[s->size]
= data;
s->size++;}
//出棧
void
pop_seqstack
(seqstack stack)
struct sstack *s =
(struct sstack *
)stack;
if(s->size ==0)
s->data[s->size -1]
=null
; s->size--;}
//獲得棧頂元素
void
*top_seqstack
(seqstack stack)
struct sstack *s =
(struct sstack *
)stack;
if(s->size ==0)
return s->data[s->size -1]
;}//獲得棧的大小
intsize_seqstack
(seqstack stack)
struct sstack *s =
(struct sstack *
)stack;
return s->size;
}//銷毀棧
void
destroy_seqstack
(seqstack stack)
free
(stack)
;}
棧的順序儲存
#define _crt_secure_no_warnings
#include
#include
#include
#include
"seqstack.h"
struct person
;void
test()
;struct person p2 =
;struct person p3 =
;struct person p4 =
;struct person p5 =
;struct person p6 =
;//資料入棧
push_seqstack
(stack,
&p1)
;push_seqstack
(stack,
&p2)
;push_seqstack
(stack,
&p3)
;push_seqstack
(stack,
&p4)
;push_seqstack
(stack,
&p5)
;push_seqstack
(stack,
&p6)
;//輸出棧中所有元素
while
(size_seqstack
(stack)
>0)
printf
("size:%d\n"
,size_seqstack
(stack));
//銷毀棧
destroy_seqstack
(stack)
; stack =
null;}
intmain()
思考,void *data[max];
為什麼不用free
。 20 受限線性表 棧
棧也是一種線性表,棧中的元素具有線性關係,只不過它是一種特殊的線性表而已,也就是說,棧是一種只能在棧頂的位置進行插入和刪除操作的線性表。圖1 棧的基本操作 棧的插入操作,叫做進棧,也稱為壓棧。類似子彈入彈夾,棧的刪除操作,叫做出棧,也有的叫做弾棧,退棧。如同彈夾中的子彈出夾。對於棧中的a,b,c,d...
受限的線性表 棧 順序棧
include define maxsize 50 typedef int datatype using namespace std 棧的資料結構 順序棧 資料運算 1.初始化乙個空棧 初始指標 1 2.資料元素入棧 如果棧沒滿,資料元素入棧 3.資料元素出棧 如果棧沒空,資料元素出棧 4.得到棧頂...
C語言中「不受限制」的字串函式總結
按 c和指標 中所說,那些常用的字串函式都是 不是限制的 就是說它們只能通過尋找字串末尾的null來判斷字元程式設計客棧串的長度。strlen函式用於求解字元www.cppcns.com串長度,其返回型別為unsigned int 即size t strlen函式從起點開始,往後計數,遇到 0 停止...