棧基本概念:
棧(stack)是限定在表尾進行插入和刪除操作的線性表(或單鏈表)。
//只能在一段進行插入和刪除,因此不存在,在中間進行插入
棧頂(top):允許插入和刪除的一端。而另一端稱為棧底(bottom)
空棧:不含任何資料元素的棧。
後進先出
兩個基本操作:
棧的插入操作(push),叫做進棧,或壓棧,或入棧
刪除操作(pop),叫做出棧,或彈棧
注意鏈棧next指標的指向,與佇列不同:
如果插入乙個元素,它的next指標是指向前乙個已經在棧中的元素的
而佇列則是,插入乙個元素,其next指標是往外指,指向空。
鏈棧的next指標之所以這樣,是方便刪除操作,這一點可以在程式設計的過程中體會到。
以下是**:
#include using namespace std;
typedef struct nodenode;
typedef struct stacklink_stack;
/**建立乙個空棧*/
link_stack * creat_stack()
/**入棧操作:push*/
link_stack * push_stack(link_stack *p,int elem)
/**出棧操作:pop*/
link_stack * pop_stack(link_stack *p)
else
}/**棧的遍歷:輸出棧*/
int show_stack(link_stack *p)
while(null != temp)
cout << endl;
return0;}
int main()
cout << "空棧插入5個元素後:"
<< endl;
show_stack(p);
cout << "刪除3個元素後:"
<< endl;
for(i = 3;i--;)
show_stack(p);
cout << "count:"
<< p->count << endl;
cout << "刪除2個元素後:"
<< endl;
for(i = 2;i--;)
show_stack(p);
cout << "count:"
<< p->count << endl;
push_stack(p,6);
cout << "插入元素6後:"
<< endl;
show_stack(p);
cout << "count:"
<< p->count << endl;
return
0;}
結果如下:
/點滴積累,我的一小步o(∩_∩)o~/
鏈棧基本操作
棧 stack 是限定在表尾進行插入和刪除操作的線性表 或單鏈表 只能在一段進行插入和刪除,因此不存在,在中間進行插入 棧頂 top 允許插入和刪除的一端。而另一端稱為棧底 bottom 空棧 不含任何資料元素的棧。後進先出 棧的插入操作 push 叫做進棧,或壓棧,或入棧 刪除操作 pop 叫做出...
順序棧 鏈棧基本操作
include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...
順序棧 鏈棧基本操作
include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...