資料結構實驗二 順序棧

2022-09-19 18:54:11 字數 1700 閱讀 4131

#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 順序棧結構...