說明1:以下**在vs2017中編譯通過,讀者使用時可以直接將標頭檔案(linkstack.h),原始檔(linkstack.c),主檔案(main.c)中的內容直接拷貝過去,即可編譯執行!
說明2:圖示
標頭檔案:linkstack.h(函式的宣告)
#pragma once
#include
#include
#include
#include
#define elemtype int
typedef
struct lsnode
lsnode;
typedef lsnode* linkstack;
lsnode*
createnode
(elemtype data)
;void
initstack
(linkstack* s)
;void
push
(linkstack* s, elemtype data)
;int
gettop
(linkstack* s)
;void
pop(linkstack * s)
;bool stackempty
(linkstack * s)
;int
stacklength
(linkstack * s)
;void
destorystack
(linkstack * s)
;void
clearstack
(linkstack * s)
;void
show
(linkstack* s)
;
原始檔:linkstack.c(函式的定義)
#include
"linkstack.h"
void
initstack
(linkstack* s)
lsnode*
createnode
(elemtype data)
void
push
(linkstack* s, elemtype data)
void
pop(linkstack * s)
intgettop
(linkstack* s)
return
(*s)
->data;
}bool stackempty
(linkstack * s)
intstacklength
(linkstack * s)
return count;
}void
clearstack
(linkstack * s)
void
destorystack
(linkstack * s)
free
(p1);}
void
show
(linkstack * s)
printf
("\n");
}
主檔案:main.c(測試檔案)
#include
"linkstack.h"
intmain()
順序棧與鏈式棧型別的定義
順序棧 define stacksize 100 假定預分配的棧的空間為100個元素 typedef char datatype 假定棧元素的資料型別為字元 typedef struct datatype data stacksize 定義棧陣列 int top 定義棧頂 seqtack 鏈式棧 t...
棧的連續與鏈式實現
stl中已經有和了,寫在這裡是幫助理解這兩種資料結構。棧 只能在表的一段插入 push 或者刪除 pop 且滿足先進先出的順序。很形象的稱之為 棧 連續棧 陣列實現 include using namespace std const int stacksize 10000 template clas...
棧的定義,順序棧,鏈式棧
棧又名堆疊,是資料暫時儲存的地方。它一種只能在頂端進行插入和刪除操作的特殊線性表,它按照先進後出的原則儲存資料,先進的資料被壓入棧底,最後的資料在棧頂,需要讀取資料的時候從棧頂開始彈出資料。棧具有記憶作用,對棧的插入和刪除操作中,不需要改變棧底指標。棧中允許進行插入和刪除操作的一端稱為棧頂 top ...