棧adt結構是lifo(last input first output,後進先出)。
使用鍊錶的形式即限制了鍊錶的(入棧和出棧)訪問只能在尾結點進行。
#include
using
namespace std;
typedef
int elementtype;
struct node;
typedef
struct node *ptrtonode;
typedef ptrtonode stack;
intisempty
(stack s)
;stack createstack
(void);
void
disposestack
(stack s)
;void
makeempty
(stack s)
;void
push
(elementtype x, stack s)
;elementtype top
(stack s)
;void
pop(stack s)
;struct node
;int
isempty
(stack s)
stack createstack
(void
)void
makeempty
(stack s)
void
push
(elementtype x, stack s)
}elementtype top
(stack s)
void
pop(stack s)
}int
main
(int argc,
char
* ar**)
陣列形式通過記錄元素數量並且通過改變其值來進行入棧出棧操作。
#include
using
namespace std;
typedef
int elementtype;
struct stackrecord;
typedef
struct stackrecord *stack;
intisempty
(stack s)
;int
isfull
(stack s)
;stack createstack
(int maxelements)
;void
disposestack
(stack s)
;void
makeempty
(stack s)
;void
push
(elementtype x, stack s)
;elementtype top
(stack s)
;void
pop(stack s)
;elementtype topandpop
(stack s)
;#define emptytos (-1)
#define minstacksize (5)
struct stackrecord
;int
isempty
(stack s)
intisfull
(stack s)
stack createstack
(int maxelements)
s =(stack)
malloc
(sizeof
(struct stackrecord));
if(s ==
null
) cerr <<
"out of space"
<< endl;
s->array =
(elementtype*
)malloc
(sizeof
(elementtype)
*maxelements);if
(s->array ==
null
) cerr <<
"out of space"
<< endl;
s->capacity = maxelements;
makeempty
(s);
return s;
}void
disposestack
(stack s)
}void
makeempty
(stack s)
void
push
(elementtype x, stack s)
else
s->array[
++s-
>topofstack]
= x;
}elementtype top
(stack s)
void
pop(stack s)
elementtype topandpop
(stack s)
intmain
(int argc,
char
* ar**)
資料結構 棧ADT
棧 stack 是限定僅在表尾插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 我們可以模擬手槍彈夾,瀏覽器的後退和前進等等都是棧 棧的插入操作,稱為進棧,也稱壓棧 入棧 push 棧的刪除操作,稱為出棧,也稱為彈棧 pop 棧本身就是乙個線性表,線性表的順...
資料結構 順序棧ADT
抽象資料型別 abstract data type,adt 是電腦科學中具有類似行為的特定類別的資料結構的數學模型 或者具有類似語義的一種或多種程式語言的資料型別。抽象資料型別是間接定義的,通過其上的可執行的操作以及這些操作的效果的數學約束 與可能的代價 維基百科 ifndef stack h in...
資料結構 鏈棧ADT
抽象資料型別 abstract data type,adt 是電腦科學中具有類似行為的特定類別的資料結構的數學模型 或者具有類似語義的一種或多種程式語言的資料型別。抽象資料型別是間接定義的,通過其上的可執行的操作以及這些操作的效果的數學約束 與可能的代價 維基百科 ifndef stack h in...