目標效果:
stack.h頁面:
#ifndef stack_h_included
#define stack_h_included
#ifndef elemtype
#define elemtype int /* 資料元素型別預設為 int */
#define elemtype_tag
#endif
//鏈棧的儲存結構定義
typedef struct lnode lnode, *linklist;
typedef linklist linkstack; //鏈棧型別
//鏈棧的基本操作宣告
//構造乙個空棧s
bool initstack(linkstack &s);
//銷毀棧s
bool destroystack(linkstack &s);
//將棧s清空
bool clearstack(linkstack &s);
//若棧s為空返回true,否則false
bool stackempty(linkstack s);
//返回棧s中的元素個數
int stacklength(linkstack s);
//用e返回棧頂元素
// 前提:棧s存在且不空
bool gettop(linkstack s, elemtype &e);
//元素e入棧s
bool push(linkstack &s, elemtype e);
//s出棧用e返回出棧元素
// 前提:棧s存在且不空
bool pop(linkstack &s, elemtype &e);
/////鏈棧的基本操作的實現
//構造乙個空棧s
bool initstack(linkstack &s)
//銷毀棧s
bool destroystack(linkstack &s)
//將棧s清空
bool clearstack(linkstack &s)
//若棧s為空返回true,否則false
bool stackempty(linkstack s)
//返回棧s中的元素個數
int stacklength(linkstack s)
return i;
}//用e返回棧頂元素
// 前提:棧s存在且不空
bool gettop(linkstack s, elemtype &e)
//元素e入棧s
bool push(linkstack &s, elemtype e)
//s出棧用e返回出棧元素
// 前提:棧s存在且不空
bool pop(linkstack &s, elemtype &e)
#ifdef elemtype_tag
#undef elemtype
#undef elemtype_tag
#endif
#endif
dsp0301.cpp頁面:
#include #include )
#include "stack.h" //鏈棧
//測試鏈棧的主程式
int main()
printf("\n棧中元素個數:");
printf("%d",stacklength(s));
printf("\n棧頂元素:");
gettop(s,x);
printf("%d",x);
printf("\n出棧結果:");
while(!stackempty(s))
printf("\n棧中元素個數:");
printf("%d\n",stacklength(s));
destroystack(s); //銷毀棧
system("pause");
return 0;
}
《資料結構 棧》鏈式儲存
一 鏈式儲存 和 順序結構 對比?棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1 如果棧的數量可預知,則使用順序棧,否則,則使用鏈棧 鏈棧 要求每個元素都有指標域,增加了記憶體開銷,但對於長度無限制。二 棧 鏈式結構 棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1...
資料結構 棧 棧的鏈式儲存結構
資料結構 棧 棧的鏈式儲存結構 用頭插法建立的鏈棧,棧頂元素為s next所指結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnode linkstack void ...
資料結構 棧的鏈式儲存
include iostream using namespace std typedef struct stacknode stacknode,stacknodeptr struct stacklist 棧與鍊錶不同的地方是,棧除了用定義了節點的結構體外,還定義了乙個棧的結構體,裡面包含棧的頭節點,...