資料結構學習之棧的兩種實現方式

2021-09-02 03:42:20 字數 1631 閱讀 2987

棧的實現

對空棧的pop和對滿push都是越界異常

兩種實現方式:

表實現 陣列實現

1。表實現:

棧adt鍊錶實現的型別宣告

#ifndef _stack_h

struct node;

typedef struct node *ptrtonode;

typedef ptrtonode stack;

int isempty(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);

#endif

struct node

;測試棧是否是空棧

int isempty(stack s)

建立乙個空棧的例程

void makeempty(stack s)

}push進棧的例程

void push(elementtype x,stack s)

返回棧頂元素

elementtype top(stack s)

從棧彈出元素

void pop(stack s)

}2。陣列實現

#ifndef _stack_h

struct stackrecord;

typedef struct stackrecord *stack;

int isempty(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);

#endif

struct stackrecord

;棧的建立

stack createstack(int maxelements)

釋放棧void disposestack(stack s)

}檢測乙個棧是否為空

int isempty(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(stack s)

else

error("empty stack");

return 0

棧的兩種實現方式

一 陣列實現棧 首先需要定義乙個陣列來儲存棧中的資料,並定義乙個變數來記錄陣列中儲存元素的個數,編寫乙個構造方法來構造乙個長度為十得陣列。先頂i有乙個陣列來儲存棧中的元素 private object array 定義陣列中儲存元素的個數 private int size 構造後乙個長度與為10的陣...

資料結構 最小棧的兩種實現方法

一切都在注釋裡 seqstcak.h pragma once include includetypedef char seqtype define seqdatamax 1000 建立乙個棧的結構體 typedef struct seqstackseqstack 初始化棧 void seqstack...

資料結構 單鏈表的兩種實現方式

單鏈表的兩種實現方式 帶頭結點和不帶頭結點 需要注意的地方 1 帶頭結點和不帶頭結點在實現插入和刪除操作時的區別 2 封裝的方便之處 見insertpriornode lnode p,elemtype e 能夠使 更簡潔,更加清晰 3 帶頭結點方式中,頭結點不裝入資料,並且看作成第0個結點。不帶頭結...