1.棧的定義:
棧是限定在表尾進行插入和刪除操作的線性表;
把允許插入和刪除的一端稱為棧頂(top),
另一端稱為棧底(bottom), 不含任何資料元素的棧稱為空棧。
棧又稱為後進先出的線性表。
棧的插入操作,叫做進棧,也稱為壓棧,入棧。子彈入彈夾;
棧的刪除操作,叫做出棧,也有的叫做彈棧。
(1)順序棧的進棧操作:
/*插入元素e為新的棧頂元素*/
status push(sqstack *s, selemtype e)
s->top++; /*棧頂指標增加一*/
s->data[s->top] = e; /*將新插入元素賦值給棧頂空間*/
return 1;}
(2)順序棧的出棧操作:
/*若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok; 否則返回error*/
status pop(sqstack *s, selemtype *e)
2.佇列的定義:
佇列是一種特殊的線性表。
隊頭(front):取出資料元素的一端。
隊尾(rear):插入資料元素的一端。
佇列不允許在中間部位進行操作!
佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。
佇列是一種先進先出的線性表。
允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。
(1)順序隊的入隊操作:
/* 若佇列未滿,則插入元素e為q新的隊尾元素 */
status enqueue(sqqueue *q,qelemtype e)
(2)順序隊的出隊操作:
/* 若佇列不空,則刪除q中隊頭元素,用e返回其值 */
status dequeue(sqqueue *q,qelemtype *e)
C 鏈式棧和順序棧
分類 1.順序棧 2.鏈式棧 常用操作 push 和 pop 常見應用 1.括號匹配問題 2.逆波蘭表示式 說明 個人c 練習 鏈式棧 優點 棧的大小靈活 缺點 不能像陣列一樣靈活遍歷 include using namespace std 鏈式棧 struct data struct stackn...
棧 實現鏈棧和順序棧)
按不同的儲存結構,可以將棧分為順序棧和鏈棧。順序棧的實現 typedef int datatype const int maxnum 1000 struct sqstack 判斷棧空 bool isempty else return false 判斷棧滿 bool isfull else retur...
鏈棧和順序棧的實現
順序棧 ifndef astack h define astack h include stack.h template class elem class astack public stack elem astack void clear bool push const elem item boo...