棧的實現 鍊錶和陣列

2021-07-15 09:57:45 字數 2625 閱讀 2161

c語言(列印函式採用的c++):

棧的鍊錶實現—— 棧的初始化(建立||清空)、入棧、出棧(獲取棧頂元素)

棧的陣列實現——初始化、入棧、出棧、清空棧

參考資料:《資料結構與演算法分析——c語言描述》 p46

stacklinklist.cpp

[cpp]view plain

copy

/*功能:棧的鍊錶實現: 棧的初始化(建立||清空)、入棧、出棧(獲取棧頂元素)

date: 2015/01/23

author : quinn

*/#include 

#include 

using

namespace

std;  

typedef

intitem;  

typedef

struct

node node;  

typedef

node* stack;  

struct

node  

;  void

stackpop(stack s);  

stack stackinit(stack s) //建立或清空(初始化)

else

//清空

while

(s->next != null)  

stackpop(s);  

cout <

<

return

s;  

}  void

stackpush(stack s, item item) 

//入棧

item stackpopandtop(stack s) //出棧並返回棧頂元素值

else

}  void

stackpop(stack s) 

//出棧

else

}  item stacktop(stack s) //僅獲取棧頂元素

return

(s->next)->item;  

}  int

main()    

執行結果:

stackarray.cpp

[cpp]view plain

copy

/*功能:棧的陣列實現——初始化、入棧、出棧、清空棧

注: 定義棧為空時,棧頂index為 -1;棧滿時,棧頂index為棧的長度-1

date:2015/01/23

author : quinn

*/#include 

#include "item.h"

#define stack_size 10 //認為設定棧的長度為10

#define full_stack (stack_size - 1)

#define empty_stack (-1)

using

namespace

std;  

typedef

struct

stack stack;  

typedef

intitem;  

struct

stack  

;  void

error(

const

char

* str) 

//異常時輸出提示

intisfull(stack* s) 

//判斷是否棧滿

intisempty(stack* s) 

//判斷是否空棧

stack* stackinit( stack* s, int

maxn) 

//初始化棧空間

void

stackmakeempty(stack* s) 

//清空棧

void

stackpush(stack* s, item item) 

//入棧

else

error("棧已滿,push失敗"

);  

}  item stackpop(stack *s) //出棧

else

error("空棧,pop失敗"

);  

}  int

main()  

cout <

<

cout <

<

stackpush(s, 20);  

cout <

<

stackmakeempty(s);  

stackpop(s);  

stackpush(s, 30);  

cout <

<

system("pause"

);  

return

0;  

}  

執行結果:

棧的實現 鍵表和陣列

棧的鍵表實現 標頭檔案 ifndef stack h define stack h struct node typedef struct node ptrtonode typedef ptrtonode stack typedef int elementtype 設定棧裡面的元素為int型的 int...

用鍊錶和陣列實現佇列

佇列的原則是先進先出,主要有offer,poll,peek,isempty和size方法.用鍊錶實現 package test class node node int var public class queuetest else tail node size 元素出隊 public int pol...

兩種實現棧的方式 利用鍊錶和陣列

棧是一種常用的資料結構,其基本方式為先進後出 棧的實現方式一般為兩種 鍊錶和陣列,先來看一下用鍊錶實現的方式 如下 利用鍊錶實現棧 author victor gong param 棧中元素的資料型別 public class linkedstack public linkedstack retur...