資料結構鏈棧的基本操作的實現

2021-10-05 23:08:31 字數 2823 閱讀 1987

2、演算法設計

五、**實現

一、實驗目的

(1)掌握棧的鏈式儲存結構;

(2)掌握棧的操作特性;

(3)掌握基於鏈棧的基本操作的實現方法。

二、實驗內容

(1)建立乙個空棧;

(2)對已建立的棧進行插入、刪除、取棧頂元素等基本操作。

三、問題分析

棧 (stack) 是限定僅在表尾進行插入或刪除操作的線性表。對棧來說,表尾端有其特殊含義,稱為棧頂 (top), 表頭端稱為棧底 (bottom)。不含元素的空表稱為空棧。棧的修改是按後進先出的原則進行的,棧又稱為後進先出的線性表。

鏈棧是指採用鏈式儲存結構實現的棧。通常鏈棧用單鏈表來表示,鏈棧的結點結構與單鏈表的結構相同,在此用stacknode表示。鏈棧有著初始化、入棧、出棧、去棧頂元素等操作。

四、演算法設計

1、主要資料結構的設計

1.1 鏈棧的入棧

①為入棧元素 e 分配空間,用指標 p 指向。

②將新結點資料域置為e。

③將新結點插入棧頂。

④修改棧頂指標為 p。

入棧示意圖

1.2 鏈棧的出棧

①判斷棧是否為空,若空則返回error。

②將棧頂元素賦給e。

③臨時儲存棧頂元素的空間,以備釋放。

④修改棧頂指標,指向新的棧頂元素。

⑤釋放原棧頂元素的空間。

出棧示意圖

1.3 取棧頂元素

當棧非空時, 此操作返回當前棧頂元素的值, 棧頂指標s保持不變。
2、演算法設計

2.1 鏈棧初始化演算法

status initstack

(linkstack &s)

2.2 入棧操作演算法
status push (linkstack &s, selentype e)

2.3 出棧操作演算法
status pop (linkstack &s, selemtype &e)

2.4 取棧頂元素演算法
selemtype gettop

(linkstack s)

五、**實現
#include

#include

#define ok 1

#define error 0

typedef

int selemtype;

typedef

struct nodestacknode,

*linkstack;

//初始化棧

intinitstack

(linkstack &s)

intdestroystack

(linkstack &s)

return ok;

}//清空棧

void

clearstack

(linkstack s)

s->next =

null

;//頭指標指標域為空,空棧

}//判斷鏈棧是否為空

intstackemply

(linkstack s)

//入棧操作

void

pushstack

(linkstack s,selemtype e)

//出棧操作

intpopstack

(linkstack s,selemtype &e)

//取棧頂元素

intgettop

(linkstack s,selemtype e)

//輸出鏈棧

void

dispstack

(linkstack s)

while

(p)printf

("\n");

}//顯示選單

void

showmenu()

void

stack()

else

printf

("初始化鏈棧失敗!\n");

break

;case2:

if(flag)

dispstack

(s);

}else

printf

("初始化鏈棧失敗!\n");

break

;case3:

if(flag)

else

break

;case4:

if(flag)

else

break

;case5:

if(flag)

else

break

;case0:

printf

("\t程式結束!\t\n");

destroystack

(s);

break

;default

:printf

("選擇錯誤,請重新選擇!!\n");

break;}

}}//主函式

intmain()

作者文壇寫於2023年5月10

資料結構的鏈棧基本操作

本程式主要是實現 建立空棧 進棧 出棧 清空棧 判空 取棧頂元素 取棧底元素 獲取棧元素長度 銷毀 include include include linkstack.h int main void pushstack mystack,100 pushstack mystack,200 pushst...

資料結構 鏈棧的操作

1.malloc函式 要求返回位元組數,並且強制轉換為指標型別。2.是指標型別訪問用到的,而.是物件型別訪問得到的。3.記得count 包括 鏈棧結點的定義,鏈棧的定義,進棧,出棧。include include define maxsize 50 using namespace std typed...

資料結構 鏈棧的基本操作 C語言

棧的特點 先進後出。鏈棧 1 棧底即鍊錶的最後乙個結點,而棧頂總是鍊錶的第乙個結點。因此 新入棧元素即為鍊錶新的第乙個結點。2 乙個鏈棧可由棧頂指標top唯一確定。如下圖給出了鏈棧中元素與top的關係。3 採用帶頭節點的單鏈表實現棧。因為 鏈棧的插入和刪除僅在表頭位置進行,所以表頭指標top就作為棧...