數(shù)據(jù)結(jié)構(gòu)_知識(shí)點(diǎn)_棧

1. 棧的定義

只允許在一段進(jìn)行插入和刪除操作的線性表。
可以理解為只有一個(gè)口的窄瓶子,出入都只能通過一個(gè)口。同時(shí),瓶內(nèi)elem按線性排列。
由特性可知,其輸入與輸出順序可以有多種不同的變化。因而,棧多用于需要輸出順序特殊的臨時(shí)存放。

順序棧

typedef struct
{
    elemType data[maxSize];
    int top;
} SqStack;

順序棧,是基于順序線性表實(shí)現(xiàn)的,在c語言中通過創(chuàng)建數(shù)組,以及定義棧頂?shù)闹羔槪5椎闹羔樉湍J(rèn)為數(shù)組的為0的下標(biāo))。通過移動(dòng)棧頂指針top,進(jìn)行壓棧,出棧的操作。
當(dāng)棧為空時(shí),top 為 -1。

鏈棧

typedef struct Node
{
    elemType data;
    Node *next; 
};

typedef Node *stack;

鏈棧一般使用沒有頭結(jié)點(diǎn)的棧表實(shí)現(xiàn)。
沒有使用頭結(jié)點(diǎn)的好處是,把鏈棧的第一個(gè)結(jié)點(diǎn)作為棧頂,stack作為結(jié)點(diǎn)指針直接執(zhí)行第一個(gè)結(jié)點(diǎn),就能進(jìn)行所有操作,而不用通過stack找到指向第一個(gè)結(jié)點(diǎn)的指針。

共享?xiàng)?/h3>

兩個(gè)棧使用同一個(gè)順序棧
一個(gè)把0為下標(biāo)的元素作為棧底,壓棧時(shí)棧頂指針 + 1
一個(gè)把maxSiza為下標(biāo)的元素作為棧底,壓棧時(shí)棧頂指針 - 1
當(dāng)棧滿時(shí),兩個(gè)棧頂指針相差1

typedef struct
{
    elemType data[maxSize];
    int top1,top2;
}stack;

定義一個(gè)數(shù)組,兩個(gè)指針。

2. 棧的操作

就是基本的線性表的插入與刪除操作,結(jié)合棧的特性使用即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容