一種只能在一端進行插入或刪除操作的線性表被稱為棧,其中允許刪除或插入的一端為棧頂,另一端為棧底,棧底固定不變;
棧的特點:先進後出,例如彈夾,先裝的子彈最後才能出;
按照儲存結構可以分為兩種棧:
//順序棧的結構體定義
typedef struct
sqstack;
//鏈棧結構體定義
typedef struct
lnode lnode;
ps:有沒有發現鏈式棧和單鏈表定義一模一樣;其實棧的本質就是受約束的線性表;
boolisemptys(sqstack s)
boolisfulls(sqstack s)
void initialstack(sqstack &s)
bool push(sqstack &s, intx)
int pop(sqstack &s)
voidprintstack(sqstack s)
int i =s.top;
for (i; i >= 0; i--)
cout
<}
intmain()
; sqstack s;
initialstack(s);
cout
<< "
順序棧測試
"
printstack(s);
cout
<< "
2入棧"
cout
<< "
10入棧
"
10);
printstack(s);
cout
<< "
出棧第一次\t
"<< pop(s)
<< "
出棧第二次\t
"<< pop(s)
<< "
出棧第三次\t
"<< pop(s)
system(
"pause");
return0;
}
線性表(二) 棧之順序棧
一 定義棧的基類 棧的基類 template class stack 判斷棧是否為空 virtual bool empty 0 棧中元素的大小 virtual size t size 0 獲取棧頂元素 virtual t top 0 彈出棧頂元素 virtual t pop 0 入棧 virtual...
線性表 棧 佇列
輔助定義 define maxsize 5 define ok 0 define error 1 typedef int selemtype typedef int status 棧 順序 鏈式 相關結構體定義 順序棧 typedef struct sqstack 順序棧共享空間 typedef s...
特殊線性表 棧
定義 限定僅在表尾進行插入和刪除操作的線性表。操作特性 後進先出。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。const int max size 100 template class t class seqstack template class t voi...