參照教材中鏈棧進棧和出棧的演算法,編寫乙個程式實現如下功能:從鍵盤上接收使用者輸入的數值,分別存入鏈棧中,直到使用者輸入任意字母結束輸入。然後逐個出棧,並計算棧中所有數值之和。
common.c
#ifndef common_h_included
#define common_h_included
#include
#include
#include
#define ok 1
#define error 0
#define true 1
#define false 0
#endif // common_h_included
seqstack.h
#ifndef linkstack_h_included
#define linkstack_h_included
#define stackelementtype int //棧中元素資料型別為字元
//棧的結構定義
typedef struct node
linkstacknode; //鏈棧的結構型別
typedef linkstacknode *linkstack ; //定義乙個鏈棧頭指標,類似順序棧的top
//鏈棧初始化
void initlinkstack(linkstack *s);
/進棧操作。/
int push(linkstack top, stackelementtype x);
/出棧操作。/
int pop(linkstack top, stackelementtype *x) ;
//讀取棧頂元素
int gettop(linkstack top, stackelementtype *x) ;
#endif // linkstack_h_included
seqstack.c
#include"linkstack.h"
#include"common.h"
//鏈棧初始化
void initlinkstack(linkstack *s)
/進棧操作。可以理解為頭插法建立鍊錶/
int push(linkstack top, stackelementtype x) // 將資料元素x壓入棧top中
/出棧操作。/
int pop(linkstack top, stackelementtype x)
//讀取棧頂元素
int gettop(linkstack top, stackelementtype x)
main.c
#include
#include
#include
#include"linkstack.h"
/* 鏈棧的基本操作:初始化,進棧,出棧,讀取棧頂 */
int main()
while(pop(ls,&tmp))sum += tmp;
printf(「總和為:%d」,sum);
return 0;
}
C語言 資料結構 鏈棧 鏈棧及其進棧 出棧
鏈棧 用單鏈表 帶頭結點 實現 鏈棧的進棧,相當於對單鏈表實施頭插法的插入 鏈棧的刪除,相當於對單鏈表的從頭的刪除.你懂我意思嗎?鏈式棧是一種資料儲存結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在於它能夠克服用陣列實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指標空間用來存放...
進棧出棧規則
先弄個例子 已知元素的入棧順序為abcde,則下列哪種出棧順序是不可能的 出棧和入棧操作可交叉進行 a edcba b cabde c dcbae d bcdea 先進後出,後進先出 在原序列中相對位置比它小的,必須是逆序 在原序列中相對位置比它大的,順序沒有要求 以上兩點可以間插進行。a選項正確 ...
進棧與出棧
問題描述 有四個元素abcd依次入初始為空的棧中,入棧之後可停留,可出棧。最後所有元素都出棧,請分析並寫出所有可能的分別以a,b,c,d開頭的出棧序列。首先分析以a開頭的出棧序列。序列前兩位無非3種 ab,ac,ad。再分別分析這三種開頭的序列分別對應著幾種可能序列。ab顯然有abcd和abdc兩種...