本篇部落格主要簡單介紹如何使用c語言構建棧,元素入棧,元素出棧以及遍歷所有的棧內元素
首先對棧進行定義,構建乙個簡單的結構體,採用typedef struct 的型別,然後包含棧頂、棧底和棧內元素三個部分
typedef structstack;
上述**表示構建乙個名字是stack型別的結構體,包含三個部分。
然後是棧的構建,來為棧開闢記憶體空間,儲存我們進行入站出棧的元素。只需在棧操作開始前進行一次棧的構建即可,無需重複。
stack *stackcreate()
上述**段為向p內分配記憶體,成功則返回p
棧構建完畢後就開始進行棧的操作了,首先就是如何將字元、數字等我們想要的內容送入棧中,就需要進行入棧操作。
void stackinput(stack *p,char str)
將字元str存入棧中,位置為top,只存在data中,然後棧top++
當我們想要棧頂的元素時,就用到了出棧的操作
char stackoutput(stack *p,char str)
}
因為top位置為棧頂值的下乙個,因此將data中top-1的值輸出,棧頂top–,返回的值為棧頂元素str
但我們想要輸出棧內儲存的所有元素,那麼就需要使用到遍歷
void stackprint(stack *p)
}
從棧頂元素開始,直到top==bottom為止,輸出其中data儲存的元素值
下面我們簡單看一下壓入乙個字元和壓入字串的情況
int main()
將字元b壓入棧中,然後從棧中輸出
//建立棧
stack *stackcreate()
//入棧
void stackinput(stack *p,char str)
//出棧
char stackoutput(stack *p,char str)
} //輸出
void stackprint(stack *p)
}//主函式
int main()
鏈棧的建立 入棧 出棧
鏈棧是在鍊錶基礎上建立的,鏈棧的棧頂指標相當於鍊錶中的頭指標。示意圖如下 建立空棧函式 chainstack createchainstack chainstack s s data 1 s next null return s 入棧 chainstack push chainstack s,typ...
棧元素入棧出棧操作(C)
元素入棧時,會先將棧壓入,top指標再向上加一。c語言如何實現呢,下面是入棧的 片段 typedef struct node sqstack void push sqstack s,int elem 入棧 s top elem,s本為指向node結構的乙個指標,本來對普通結構體指標賦值或者使用用 s...
C語言鏈式儲存結構棧的出棧和入棧
棧的鏈式儲存結構就是使用鍊錶儲存棧中資料元素,此時的棧稱為鏈棧。通常採用帶頭結點的單鏈表儲存棧。棧的操作許可權在棧頂進行,可將頭節點指標指向棧頂節點,如用top指標指向頭結點,稱為top結點。a n 1 a1a0 圖1.1 棧的邏輯結構 圖1.2 棧的鏈式儲存結構 struct node tpede...