棧的鏈式儲存結構 帶頭結點的單鏈表實現

2021-10-06 20:20:33 字數 1177 閱讀 3814

要避免棧上溢,最好的辦法就是使用鏈式儲存結構,讓多個棧共享所有可用的儲存空間。所以,棧也可以採用鏈式儲存結構表示,這種結構的棧簡稱為鏈棧。

新入棧的元素即為鍊錶新的第乙個結點,只要系統還有儲存空間,就不會有棧滿的情況發生。乙個鏈棧可由乙個棧頂指標top唯一確定。

採用帶頭結點的單鏈表實現棧。因為棧的插入和刪除操作只在表頭進行,所以鍊錶的表頭指標top就作為棧頂指標,top始終指向當前棧頂元素前面的頭節點,即top->next為棧頂元素,當top->next==null,則代表棧空。

二、**實現

stack.h

#pragma once

#include

typedef struct stacknode stacktype;

//初始化

void

initstack

(stacktype *

*top)

//入棧操作

intpushstack

(stacktype *top, elemtype x)

//出棧操作

elemtype popstack

(stacktype *top)

else

}//取棧頂資料元素

elemtype gettop

(stacktype *top)

else

}

原始檔:

#include

#include

#include

typedef int elemtype;

#include"stack.h"

intmain()

printf

("\n出棧的順序為:");

while

(stack1-

>next != null)

system

("pause");

return0;

}

三、執行結果

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...

帶頭結點和不帶頭結點的鏈棧基本操作

c 資料結構 把鏈棧想象成單鏈表頭結點的後插和後刪操作 不帶頭結點的鏈棧 include include include using namespace std typedef struct linknode1 listack1 void initstack1 listack1 l 進棧 lista...

資料結構 鏈棧(棧的鏈式儲存結構)

工程目錄結構 函式的返回結果,ok erreo true false 12 typedef int elemtype 結點資料域的資料型別 1314 endif common.c 1 include common.h 2 3status visit elemtype e 4linkstack.h 1...