順序棧的表示與實現

2021-09-13 19:05:29 字數 1355 閱讀 1244

說明

想要使用順序表實現棧,結構體中應包含棧頂和棧底的指標,同時需要指定棧的儲存單元大小(動態可變)。其中棧底指標base用來動態分配棧的記憶體空間,棧頂指標top用來指定棧頂元素在順序棧中的位置。

初始化時top

=bas

etop=base

top=ba

se,表示棧中無元素,而後每壓入乙個新的元素,先為棧頂記憶體賦值,再讓棧頂指標指向下一塊記憶體單元。

值得注意的是,棧頂指標總是在棧頂元素的下乙個位置。我覺得可以這樣理解:假設0

00為最初下標,沒有元素時,可以認為此時元素位置是−1-1

−1,而後加入元素,指標上移,始終比元素下標高乙個位置。

另外,對於pus

hpush

push

和p op

poppo

p等各種操作,都應該對棧中元素進行判空或判滿處理,以使無錯誤之虞。

**

//順序表實現棧

#include

#include

#include

#define ok 1

#define error -1

#define stack_init_size 1024

#define stackincrement 128

using namespace std;

typedef

int elemtype;

typedef

struct

stack;

intinitstack

(stack &st)

intdestroystack

(stack &st)

intclearstack

(stack &st)

bool stackempty

(stack &st)

intstacklenght

(stack &st)

intgettopelem

(stack &st)

intpush

(stack &st, elemtype e)

*st.top++

= e;

return ok;

}int

pop(stack &st, elemtype &e)

//學習函式指標詳解

void

test

(stack &st)

cout << endl;

}int

main()

2 1順序棧的表示與實現

棧 stack 也稱堆疊,是一種特殊的線性表,只允許在一端進行插入和刪除操作。棧表允許操作的一端叫棧頂,另一端稱棧底。棧頂是動態變化的,它由乙個棧頂指標top的變數來指示。當表中沒有元素時,稱為空棧。實現 sseqstack.h pragma once include include define ...

順序棧 棧的順序表示和實現

用順序表表示的棧的基本操作 include include define selemtype int define status int define stack init size 100 初始空間分配量 define stackincrement 10 儲存空間分配增量 using namesp...

棧的順序表示和實現

棧是僅限定在表位進行插入和刪除的線性表。因此,對棧來說,表尾端有其特殊含義,稱為棧頂,相應的表頭端稱為棧底。不含元素的空表稱為空棧。假設棧s a1,a2,an 則稱a1為棧底元素,an為棧頂元素。棧中元素按啊a1,a2,an的次序進棧,退棧的第乙個元素應是棧頂元素。換句話說,棧的修改是按後進先出的原...