資料結構原始碼(二)棧ADT

2021-10-24 00:22:41 字數 2671 閱讀 4740

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