C 順序棧的基本操作及數制轉換

2021-10-10 05:40:32 字數 2833 閱讀 6666

實驗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...