棧之順序棧

2021-06-23 04:55:17 字數 1890 閱讀 1982

我是辛勤的小蜜蜂~~~哈哈~~

下面來介紹下順序棧。我們知道,棧具有乙個棧頂指標,有些教材中的順序棧的棧頂指標指向棧頂元素的下乙個位置,但本文中的棧頂指標都指向棧頂元素。其中,s->data[0]是棧底元素,top是棧頂指標。

#include#define stacksize 100             //假定預分配的棧空間最多為100個元素

typedef char datatype; //假定棧元素的資料型別為字元

typedef struct seqstack;

//********************************棧的一些基本操作**********************************

void initstack(seqstack *s)

int stackempty(seqstack *s)

int stackfull(seqstack *s)

void push(seqstack *s,datatype x)

s->data[++s->top]=x; //將棧頂指標加1後講x入棧

}void pop(seqstack *s)

s->top--; //將棧頂指標減1

}datatype stacktop(seqstack *s)

return s->data[s->top];

}void createstack(seqstack *s)

return ;

}//***********************************測試函式********************************

int main()

測試樣例:

設想如果將陣列的一端固定,看做棧底,另一端看做活動的,那麼我們可以用陣列來模擬順序棧,具體**如下。此時的指標相當於陣列的指標。但此時對於多個棧的情況,處理起來不太方便,而且以下**不具有很好的封裝性。程式的具體執行樣例與上一段**相同,就不再貼出了。錯誤之處,還請指出!

#include#define stacksize 100             //假定預分配的棧空間最多為100個元素

typedef char datatype; //假定棧元素的資料型別為字元

int top; //棧頂指標,這裡是全域性變數,不太好

//********************************棧的一些基本操作**********************************

void initstack()

int stackempty()

int stackfull()

void push(datatype *s,datatype x)

s[++top]=x; //將棧頂指標加1後講x入棧

}void pop()

top--; //將棧頂指標減1

}datatype stacktop(datatype *s)

return s[top];

}void createstack(datatype *s)

return ;

}//***********************************測試函式********************************

int main()

棧之順序棧

資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的一些基本知識比如c 中的物件導向思想也引入進來,同時也...

棧之順序棧

棧 限定僅在表尾進行插入或者刪除操作的線性表,又稱為先進後出的線性表 include include include include include include include include include include define inf 0x3f3f3f3f define ll lon...

棧,順序棧,鏈棧

棧作為一種限定性線性表,是將表的插入刪除限制為僅在表的一端進行,通常將表中允許插入刪除的一端叫做棧頂 top 因此棧頂的當前位置是動態變化的。棧的另一端叫做棧底 bottom 當棧中沒有元素時稱為空棧。插入操作稱為進棧或入棧,刪除操作稱為出棧或退棧。棧是先進後出的線性表,簡稱為lifo表。棧主要有兩...