順序棧和順序佇列

2021-07-24 22:50:14 字數 955 閱讀 5971

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...