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...