棧是一種操作受限的線性表只允許從一端插入和刪除資料。棧有兩種儲存方式,即線性儲存和鏈結儲存(鍊錶)。棧的乙個最重要的特徵就是棧的插入和刪除只能在棧頂進行,所以每次刪除的元素都是最後進棧的元素,故棧也被稱為後進先出(lifo)表。每個棧都有乙個棧頂指標,它初始值為-1,且總是指向最後乙個入棧的元素,棧有兩種處理方式,即進棧(push)和出棧(pop),因為在進棧只需要移動乙個變數儲存空間,所以它的時間複雜度為o(1),但是對於出棧分兩種情況,棧未滿時,時間複雜度也為o(1),但是當棧滿時,需要重新分配記憶體,並移動棧內所有資料,所以此時的時間複雜度為o(n)。以下舉例棧結構為線性儲存。
#include
"stdio.h"
#include
"stdlib.h"
#define num 512
struct stack
;struct stack stack;
void
push
(int e)
;int
pop();
intempty()
;void
delete()
;void
list()
;void
main()
intempty()
else
return0;
}void
push
(int e)
else
printf
("當前棧溢位\r\n");
}int
pop()if
(empty()
==0)return p;
}//清空所有棧
void
delete()
stack.top =0;
stack.stacksize =0;
if(empty()
==1)printf
("delete success\r\n");
}void
list()
else
}}
棧隊結構C 實現
順序棧與隊使用陣列儲存資料 include define max 10 using namespace std 迴圈鍊錶測試 void queue else 出隊depart queue cout endl int out while front rear 順序棧測試 void stack else...
資料結構(C實現) 順序棧
棧是限定僅在表的一端進行插入或刪除的純屬表,通常稱允許插入,刪除的一端為棧頂 top 相應在的,則稱另一端為棧底 bottom 不含元素的棧則稱為空棧。所設棧s 則稱a1為棧底元素,an為棧頂元素。根據棧的定義可知,棧頂元素總是最後入棧並且最先出棧的 棧底元素總是最先入棧並且最後出棧的。即棧是按後進...
資料結構(C實現) 鏈棧
鏈棧,即棧的鏈式儲存結構,鏈棧通常使用不帶頭結點的單鏈表來表示,因此其結點的結構和單鏈表的結點結構相同。在乙個鏈棧中,棧底就是鍊錶的最後乙個結點,而棧頂總是鍊錶的第乙個結點。因此,新入棧的元素即為鍊錶中採用頭插法新加入的結點,乙個鏈棧可以由棧頂指標唯一確定,當top為null時,則表示該棧是乙個空的...