C語言實現資料結構中的鏈棧

2021-04-12 22:29:29 字數 1346 閱讀 3950

實現方式一

# include

# include

typedef char nodedata;

//鏈棧

typedef struct node

stacknode;

typedef struct

linkstack;

/*置棧空*/

void initstack(linkstack *ls)

/*判棧空*/

int isstackempty(linkstack *ls)

/*進棧*/

void pushstack(linkstack *ls,nodedata nodedata)

/*出棧*/

nodedata popstack(linkstack *ls)

/*列印棧*/

void printstack(linkstack *ls)

}void main()

printf("print linkstack:/n");

//列印棧元素

printstack(ls);

printf("pop stack/n");

//出棧

popstack(ls);

printstack(ls);

printf("pop stack/n");

//出棧

popstack(ls);

printstack(ls);

} 實現方式二

只定義了棧節點

# include

# include

typedef char nodedata; //節點資料

typedef struct node

stacknode;

/*置棧空*/

stacknode * initstack(stacknode *top)

/*入棧 (這裡很容易出錯,需要返回頭接點的指標否則每次入參都是指向同乙個接點的位址而不是頭指標的位址)*/

stacknode * pushstack(stacknode *top,nodedata nodedata)

/*列印棧*/

void printstack(stacknode *top)

}void main()

printstack(top);

} 實現方式一 中linkstack結構型別的定義是為了方便在函式體中修改top指標本身

通過修改指向linkstack的top指標來控制入棧和出棧.

實現方式二 通過每次修改頭指標並返回給入參來控制入棧和出棧.

方式一是通過指標引數修改指標所指內容的典型用法.

方式二是通過函式返回值改變入參內容的典型用法。

資料結構 棧(C語言實現)

定義 一種先進後出的資料結構 實現 標頭檔案 include include typedef struct node 定義節點 pnode,node typedef struct stack 定義棧 stack,pstack 棧的初始化 void init pstack ps else 判斷棧非空 ...

C語言實現資料結構中的鏈佇列

佇列的鏈式儲存結構簡稱鏈佇列 include include 定義鏈佇列 typedef char nodedata typedef struct node queuenode typedef struct linklist linkqueue 初始化佇列 void initqueue linkqu...

C語言實現資料結構中的順序棧

棧 stack 是限制僅在表的一端進行插入和刪除運算的線性表,通常稱插入,刪除的一段為棧頂 top 另一端為棧底 botton 當表中沒有元素時稱為空棧.棧是後進先出 last in first out 的線性表 下面是c語言實現資料結構中的順序棧及基本演算法 include include 定義順...