資料結構棧的基本操作實現 C語言實現

2021-10-24 13:40:15 字數 1612 閱讀 5687

棧的基本操作的實現

棧:是一種受限的鍊錶只允許在同一端插入(入棧:push)和刪除(出棧:pop),所以棧遵循先進後出的原則

棧的基本操作的實現如下:

#include

#include

typedef

int elementtype;

typedef

struct node node,

*stack;

//****************定義基本操作*********************

stack init_stack()

;//初始化乙個頭節點;

stack push

(stack p, elementtype e)

;stack pop

(stack p)

;void

prtstack

(stack p)

;//列印棧中元素;

elementtype top

(stack p)

;//列印棧頂元素;

elementtype bottom

(stack p)

;//列印棧底元素;

void

destroystack

(stack p)

;//銷毀乙個棧;

//*******************#end************************

intmain()

printf

("%d\n"

,top

(p))

;// prtstack(p);

p =pop(p)

;printf

("%d\n"

,top

(p))

;// prtstack(p);

printf

("%d\n"

,bottom

(p))

;destroystack

(p);

return0;

}stack init_stack()

stack push

(stack p, elementtype e)

stack pop

(stack p)

void

prtstack

(stack p)

elementtype top

(stack p)

elementtype bottom

(stack p)

void

destroystack

(stack p)

stack tempcell = p;

p = p->next;

free

(tempcell)

;destroystack

(p);

}

錯誤總結:

對與乙個結構體指標p,盡量使用一種統一的結構去操作,不要一會用p->next,一會用p,這樣非常有能導致混亂,進而發生越界錯誤

在函式中如果指標沒有被返回的話,是有可能造成指標並未發生實際改變,尤其是在pop操作實現的時候,很有可能導致指標並沒按照我們所想移動,進而導致free()函式發生錯誤。

資料結構 一 棧的基本操作C語言實現

撤回,即 ctrl z,是我們最常見的操作之一,大多數應用都會支援這個功能。你知道它是怎麼實現的嗎?答案是這樣的 把之前的應用狀態 限制個數 儲存到記憶體中,最近的狀態放到第乙個。這時,我們需要棧 stack 來實現這個功能。棧中的元素採用 lifo last in first out 即後進先出。...

資料結構 鏈棧的基本操作 C語言

棧的特點 先進後出。鏈棧 1 棧底即鍊錶的最後乙個結點,而棧頂總是鍊錶的第乙個結點。因此 新入棧元素即為鍊錶新的第乙個結點。2 乙個鏈棧可由棧頂指標top唯一確定。如下圖給出了鏈棧中元素與top的關係。3 採用帶頭節點的單鏈表實現棧。因為 鏈棧的插入和刪除僅在表頭位置進行,所以表頭指標top就作為棧...

資料結構與演算法C語言實現 棧的基本操作

雨中漫步 問題 編寫程式任意輸入棧長度和棧中的元素值,構造乙個順序棧,對其進行清空 銷毀 入棧 出棧以及取棧頂元素操作。include include define maxsize 100 typedef int elemtype typedef struct sqstack 順序棧型別 void ...