一、實驗目的
1.深入了解棧的定義和特性。
2.掌握棧的順序表示、鍊錶表示以及相應操作的實現,鞏固對這兩種結構的構造方法的掌握。
3. 會靈活運用棧結構解決某些實際問題。
二、實驗內容
1. 棧的基本操作的實現(初始化、賦值、取值、插入、刪除等),要求分別採用順序和鏈式儲存結構。
順序棧源程式
#include
#include
#define maxsize 100
#define ok 1
#define error 0
#define overflow -1
typedef
int selemtype;
typedef
int status;
typedef
struct
sqstack;
status initstack
(sqstack &s)
//順序棧的初始化
intassign
(sqstack &s,selemtype e)
//元素e壓入棧頂,棧頂指標加1
return ok;
} selemtype gettop
(sqstack s,selemtype &e)
//取值
status push
(sqstack &s,selemtype e)
//插入
status pop
(sqstack &s,selemtype &e)
//刪除
intmain()
執行結果
鏈棧源程式
#include
#include
#define maxsize 100
#define ok 1
#define error 0
#define overflow -1
typedef
int selemtype;
typedef
int status;
typedef
struct stacknode
stacknode,
*linkstack;
status initstack
(linkstack &s)
//鏈棧的初始化
intassign
(linkstack &s,selemtype e)
return ok;
}status push
(linkstack &s,selemtype e)
status pop
(linkstack &s,selemtype &e)
selemtype gettop
(linkstack s,selemtype &e)
intmain()
執行結果 ! 順序棧與鏈式棧的C語言實現 !
基本操作 入棧 出棧 取棧頂元素 基本特性 先進後出 注意 棧本身不能遍歷,不能列印,我們在 中實現的列印只是為了檢查 的正確性 具體操作的詳細解釋在 中會有注釋。1.順序棧 在結構體內定義乙個變數以 使用malloc申請記憶體,從而實現將順序表的固定長度修改為可動態擴容 seqstack.h pr...
棧的鏈式儲存結構(C語言實現)
1 include 2 include 3 4 define ok 1 5 define err 2 6 define true 1 7 define false 0 89 typedef int status 定義函式返回的狀態,ok err 10 typedef char datatype 定義...
C語言實現棧(鏈式棧)
由於棧的插入 刪除操作只能在一端進行,而對於線性鍊錶來說,在首端插入或 刪除比在尾端要容易一些,所以,將線性鍊錶的首端作為棧頂端,即將頭指標作為棧頂指標。1 結構體 1 typedef struct nodenode 56 typedef struct my stackstack 2 初始化 1 s...