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就作為棧...