考研資料結構與演算法之堆疊的使用(三)陣列實現的堆疊

2021-06-21 21:50:48 字數 937 閱讀 9146

這段時間遇到了一些問題,也查了不少資料,許多問題依然沒有得到解決,昨晚睡前突然看到一篇據說是神級**實現的堆疊,研究了半天沒有發現好在**,只好貼出來看一看了。

#include #include #define max_length 100

#define empty -1

#define full ( max_length - 1 )

typedef struct stack

stack;

void push(stack *s, char c);

char pop(stack *s);

char top(stack *s);

bool empty(stack *s);

bool full(stack *s);

void reset(stack *s);

int main(void)

scanf("%c", &c);

} int i = 0;

while( i != s.top )

system("pause");

}void push(stack *s, char c)

char pop(stack *s)

char top(stack *s)

bool empty(stack *s)

bool full(stack *s)

void reset(stack *s)

我認為這段**主要存在以下幾個問題:

一:容錯性太差,如沒有考慮到入棧時棧滿的情況,出棧前沒有確定堆疊中有內容等。

二:函式的命名太隨意,如果是與其他資料結構混用時根本無法進行區分。

三:沒有對執行結果是否成功進行判斷。

此外我在這段**中加入了一段行編輯程式的demo,結果發現使用『#』刪除文字的功能依然無法實現,有些蛋疼啊。

考研資料結構與演算法之堆疊的建立與使用(一)

到了堆疊這裡一下子就輕鬆了,算是一種暫時的解脫吧。經過了鍊錶部分的學習和思考,我突然意識到嚴蔚敏教材的嚴謹性。下面是按照教材實現的堆疊操作 唯一有些疑問的是在pop操作中要不要根據需要縮減堆疊的尺寸呢?include include define ok 1 define error 0 define...

考研資料結構與演算法之堆疊的使用(四)鍊錶實現的堆疊

還是參考了別人的 不過比我自己寫出來的確實是要簡潔的多,不過仍然有不規範的地方,但是仍然值得我學習一下,在敲打的時候也是受到了一定的啟發。include include define full 1000 define empty 0 typedef char data struct elem str...

資料結構與演算法 堆疊

定義 具有一定操作約束的線性表,只在一段做插入,刪除,先出 adt 型別名稱 堆疊 stack 資料物件集 乙個有0個或多個元素的有窮鍊錶 操作集 初始化空堆疊,判斷是否已滿,是否為空,插入和刪除 堆疊的順序儲存結構通常由乙個一維陣列和記錄棧頂元素位置的變數組成。define struct snod...