棧的基本操作的實現
棧:是一種受限的鍊錶只允許在同一端插入(入棧: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 ...