棧是線性表的特例,棧只在棧頂進行插入及刪除操作,因此資料是後進先出。棧的順序儲存其實也是線性表順序儲存的簡化。
棧的結構定義如下:
進棧操作push,其**如下:
/*插入元素e為新的棧頂元素*/
stauts push(sqstack *s, selemtype *e)
s->top++; //棧頂指標+1
s->data[s->top] = e; //將新元素賦值給棧頂空間
return ok;
}
出棧操作pop,其**如下:
/*若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則,返回error*/
status pop(sqstack *s, selemtype *e)
由於棧的順序儲存沒有用到迴圈,因此時間複雜度均為o(1). 4 1 0 棧的順序儲存結構及實現
順序棧結構 typedef struct sqstack 棧普通情況 空棧和棧滿的情況示意圖 邏輯圖 插入元素e為新的棧頂元素 status push sqstack s,selemtype e 若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok 否則返回error status pop sqs...
棧的順序儲存結構實現。
ifndef stack h define stack h define size 5 typedef structstack 初始化棧的儲存區 void stack init stack 清理棧的儲存區 void stack deinit stack 判斷棧是不是滿了 int stack full...
棧的順序儲存實現及鏈式儲存實現
include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...