實驗4、順序棧的基本操作及應用
要求:(1)實驗目的
通過該實驗,讓學生掌握棧的相關基本概念,認識棧是插入和刪除集中在一端進行的線性結構,掌握棧的「先入後出」操作特點。棧在進行各類操作時,棧底指標固定不動,掌握棧空、棧滿的判斷條件。
(2)實驗內容
用順序儲存結構,實現教材定義的棧的基本操作,提供數制轉換功能,將輸入的十進位制整數轉換成二進位制、八進位制或十六進製制。
(3)參考介面
選單中包括以下功能:
1.初始化棧,2.銷毀棧,3.清空棧,4.棧判空,5.求棧長度,6.獲取棧頂元素,7.插入乙個 元素,8.刪除乙個元素,9輸出所有元素,10進製轉換。
要求:自定義的函式中不允許出現提示語和輸出語句。
(4)驗收/測試用例
通過選單呼叫各個操作,測試點:
沒有初始化前進行其他操作,程式是否能控制住;
初始化乙個棧;
判棧空,螢幕顯示棧為空;
3個數入棧, 2、4、6;
棧長度,螢幕輸出3;
取棧頂元素,再判棧空,然後再判棧長度。讓學生知道取棧頂元素不改變棧中的內容,棧頂指標不發生改變;
出棧,再判棧長度和輸出棧中內容;(多次出棧,直到棧為空;再出棧,是否提示棧為空)
銷毀棧,再做其他操作,判斷程式是否能控制;
數制轉換,(允許使用者輸入想把十進位制轉換成幾進製),然後靈活的轉換成對應的進製。
#include
#include
using
namespace std;
#define stack_init_size 100
//空間初始分配量
#define stackincrement 10
//分配增量
#define overflow -1
int exist=0;
//判定初始化
typedef
int selemtype;
typedef
struct
sqstack;
//構造乙個空棧
void
initstack
(sqstack &s)
//銷毀棧
void
destroystack
(sqstack &s)
}//清空棧
void
clearstack
(sqstack &s)
//棧判空
void
stackempty
(sqstack &s)
//求棧長
intstacklength
(sqstack &s)
//獲取棧頂元素
intgettop
(sqstack &s)
else
}//插入棧頂.
void
push
(sqstack &s,
int e)
*s.top++
=e;}
//刪除棧頂
intpop
(sqstack &s)
else
}//輸出所有元素(由棧頂到棧低依次輸出)
void
dispstack
(sqstack &s)
cout<}//轉換為二進位制
void
transto2
(sqstack &s,
int e)
cout<<
"對應的二進位制為:"
;while
(s.top!=s.base)
cout
//轉為八進位制
void
transto8
(sqstack &s,
int e)
cout<<
"對應的八進位制為:"
;while
(s.top!=s.base)
cout
intmain()
else cout<<
"請先初始化棧!"
;case3:
if(exist==1)
else cout<<
"請先初始化棧!"
;case4:
if(exist==1)
else cout<<
"請先初始化棧!"
;case5:
if(exist==1)
else cout<<
"請先初始化棧!"
;case6:
if(exist==1)
else cout<<
"請先初始化棧!"
;case7:
if(exist==1)
else cout<<
"請先初始化棧!"
;case8:
if(exist==1)
else cout<<
"請先初始化棧!"
;case9:
if(exist==1)
else cout<<
"請先初始化棧!"
;case10:
if(exist==1)
else cout<<
"請先初始化棧!"
;default
: cout<<
"輸入有誤!請重新輸入."
<}
順序棧實現數制轉換
include include define stacksize 100 假定預分配的棧空間最多為100個元素 typedef int datatype 應將順序棧的datatype定義改為整型 typedef struct seqstack void main void initstack seq...
棧的基本操作及實現(順序棧)
順序儲存結構來實現的棧稱為順序棧,它利用一組位址連續的儲存單元存放自棧底到棧頂的資料元素,同時附設乙個指標top來指示當前棧頂的位置。注意,是c 特有的用來表示引用呼叫,所以此檔案應以.cpp字尾儲存 結構體為 define maxsize 50 typedef int elemtype typed...
C 順序棧基本操作
1 include 2 define stacksize 50 設棧中元素個數為50個 3using namespace std 45 struct seqstack6 1011 構造乙個空棧 12 void initstack seqstack s 1316 17 將x置入s棧新棧頂 18 boo...