#include
#include "stdio.h"
#include "stdlib.h"
using namespace std;
#define ok 1
#define error 0
#define overflow -2
typedef int status;
typedef int selemtype;
#definestack_init_size100 // 儲存空間初始分配量 看清實驗題幹要求,不是maxsize
typedef structsqstack;
//01初始化乙個順序棧s
status initsstack(sqstack &s)
//02隨機建立乙個正整數值的棧(當輸入-1時建立結束 )
status createsstack(sqstack &s)
else
break;//跳出while迴圈用break,程式接著執行while後面的**;跳出程式用return;
}return ok;
}//03入棧
status push(sqstack&
s,selemtype e)//s是乙個結構體變數,不是指標,函式要修改實參棧的值,故而&s,即形參變了要讓實參的值也一塊變, 而e的值不需返回故不加&。
//04將棧頂元素彈出, 並在彈出結束後輸出彈出元素的值;
status pop(sqstack&s,selemtype&e)//s同上,同時,e的值要傳遞給實參,讓實參的值變成e,因此也要&e。
e=*(--s.top);//棧頂指標要變,先--,後把棧頂元素值返回,**執行完,棧整體就少了乙個元素
return ok;
}//05輸出棧頂元素的值
status gettop(sqstack s,selemtype&e)//e的值要傳回給實參,因此要&e,但s的值不需傳回實參,也就是函式功能上沒要求改變主函式中的實參,故不用加&。
e=*(s.top-1); //返回棧頂元素,但棧頂指標不能變,所以不能s.top--。
return ok;
}//06求棧的長度;
status getlength(sqstack s,selemtype &len)//e的值要傳遞給實參,因此要&e,但s的值沒變不用加&。
len=s.top-s.base;
return ok;
}//07輸出從棧底到棧頂的所有元素,不能改變棧,如top指標等。
status displaysstack(sqstack s)
int *p=s.base;
while(p/*輸出從棧頂到棧底的所有元素
int *p=s.top;
while(p>s.base)
*/return ok;
}void main()
資料結構實驗三 順序棧
include include define m 10 define n 5 int flag 0 typedef struct seqstack seqstack void initstack seqstack s void createstack seqstack s flag 1 printf...
資料結構 順序棧
編寫乙個程式,實現順序棧 假設棧中元素型別為char 的各種基本運算。並完成下面功能 1 初始化棧s 2 判斷棧s是否非空 3 依次進棧元素a,b,c,d,e 4 判斷棧s是否非空 5 輸出棧長度 6 輸出從棧頂到棧底元素 7 輸出出棧序列 8 判斷棧s是否非空 9 釋放棧。include incl...
資料結構 順序棧
構造乙個順序棧 當輸入9999時,結束入棧操作 輸出棧中元素,顯示棧頂元素,刪除棧頂元素 include include include define stack init size 100 define ok 1 define error 0 typedef int selemtype 順序棧結構...