1、掌握棧的結構特性及其入棧,出棧操作;
2、掌握佇列的結構特性及其入隊、出隊的操作,掌握迴圈佇列的特點及其操作。
/*儲存空間初始分配量*/
#define stackincrement 5
/*儲存空間分配增量*/
typedef
int elemtype;
/*定義元素的型別*/
typedef
struct
sqstack;
intinitstack
(sqstack *s)
;/*構造空棧*/
intpush
(sqstack *s,elemtype e)
;/*入棧*/
intpop
(sqstack *s,elemtype *e)
;/*出棧*/
intcreatestack
(sqstack *s)
;/*建立棧*/
void
printstack
(sqstack *s)
;/*出棧並輸出棧中元素*/
intinitstack
(sqstack *s)
/*initstack*/
intpush
(sqstack *s,elemtype e)
*s->top=e;
s->top++
;return ok;
}/*push*/
intpop
(sqstack *s,elemtype *e)
}/*pop*/
intcreatestack
(sqstack *s)
printf
("input data:(terminated by inputing a character)\n");
while
(scanf
("%d"
,&e)
)push
(s,e)
;return ok;
}/*createstack*/
void
printstack
(sqstack *s)
/*pop_and_print*/
intmain()
演算法分析:輸入元素序列1 2 3 4 5,為什麼輸出序列為5 4 3 2 1?體現了棧的什麼特性?
先進後出(後進先出)
實現**
#include
#include
#define error 0
#define ok 1
#define stack_int_size 10
/*儲存空間初始分配量*/
#define stackincrement 5
/*儲存空間分配增量*/
typedef
int elemtype;
/*定義元素的型別*/
typedef
struct
sqstack;
intinitstack
(sqstack *s)
;/*構造空棧*/
intpush
(sqstack *s,elemtype e)
;/*入棧*/
intpop
(sqstack *s,elemtype *e)
;/*出棧*/
intcreatestack
(sqstack *s)
;/*建立棧*/
void
printstack
(sqstack *s)
;/*出棧並輸出棧中元素*/
intinitstack
(sqstack *s)
/*initstack*/
intpush
(sqstack *s,elemtype e)
*s->top=e;
s->top++
;return ok;
}/*push*/
intpop
(sqstack *s,elemtype *e)
}/*pop*/
intcreatestack
(sqstack *s)
printf
("input data:(terminated by inputing a character)\n");
while
(scanf
("%d"
,&e)
)push
(s,e)
;return ok;
}/*createstack*/
void
printstack
(sqstack *s)
/*pop_and_print*/
intisempty
(sqstack *s)
void
conversion
(int n)
while(!
isempty
(&s))}
intmain()
驗證
正確
#include
#include
#include
#define m 20
#define elemtype char
typedef
struct
stacknode;
void
init
(stacknode *st)
;void
push
(stacknode *st,elemtype x)
;void
pop(stacknode *st)
;void
init
(stacknode *st)
void
push
(stacknode *st,elemtype x)
}void
pop(stacknode *st)
intmain()
if(sp-
>top==0)
printf
("'('match')'!\n");
else
printf
("'('not match')'!\n");
return0;
}
輸入:2+((c-d)*6-(f-7)*a)/6
執行結果:』(『match』)』!
輸入:a-((c-d)*6-(s/3-x)/2
執行結果:』(『not match』)』!
程式的基本功能:判斷給定表示式中所包含的括號是否正確配對出現實現**:
#include
#include
#define true 1
#define false 0
#define qelemtype int
typedef
struct node
node,
*linkqnode;
typedef
struct
linkqueue;
void
initlinkqueue
(linkqueue &q)
intislqempty
(linkqueue &q)
intenlinkqueue
(linkqueue &q,qelemtype x)
else
return false;
}int
delinkqueue
(linkqueue &q,qelemtype *x)
intmain()
printf
("\n輸入字母『e』開始出列\n");
getchar()
;while(~
scanf
("%c"
,&a))if
(delinkqueue
(q,&tt)
)printf
("元素%d成功出列\n"
,tt);if
(islqempty
(q))
else
printf
("該佇列不為空!\n");
printf
("\n輸入字母'e'繼續出列\n");
}return0;
}
《資料結構》實驗三 棧和佇列實驗 (實驗報告)
一 實驗目的 鞏固棧和佇列資料結構,學會運用棧和佇列。1.回顧棧和佇列的邏輯結構和受限操作特點,棧和佇列的物理儲存結構和常見操作。2.學習運用棧和佇列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.自己選擇順序或鏈式儲存結構,定義乙個空棧類,並定義入棧...
資料結構實驗報告 資料結構實驗報告
使用c語言中的陣列,實現線性表中的順序結構儲存的查詢 刪除操作。1 初始線性表通過陣列 迴圈 scanf語句實現輸入任意個整數。2 刪除操作的實現,任意輸入乙個要刪除的整數,找到這個元素,將此元素之後的所有元素逐個前移一位,實現刪除操作。3 要求以上2步操作可以重複執行。4 例如 刪除操作執行結果大...
資料結構實驗報告
1 掌握佇列儲存結構的表示和實現方法。2 掌握佇列的入隊和出隊等基本操作的演算法實現。3 了解佇列在解決實際問題中的簡單應用。1 建立順序迴圈佇列,並在順序迴圈佇列上實現入隊 出隊基本操作 驗證性內容 2 建立迴圈鏈佇列,並在迴圈鏈佇列上實現入隊 出隊基本操作 設計性內容 3 實現鍵盤輸入迴圈緩衝區...