




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗三 順序棧操作實現實驗日期: 2017 年 4 月 1 日 實驗目的及要求1. 熟練掌握棧的結構,以及這種數據結構的特點;2. 能夠在兩種存儲結構上實現棧的基本運算,特別注意棧滿和??盏呐袛鄺l件及描述方法。實驗內容已知順序棧的類型定義如下:#define MAX 100typedef char datatype;typedef struct datatype dataMAX; int top;SeqStack, *SeqStackptr; 任務1題目要求任務一:創建自定義頭文件seqStack.h,包含順序棧的數據類型定義及基本操作函數,需定義的基本操作如下:(1)void Error(c
2、har *s);/*自定義錯誤處理函數*/(2)void InitStack (SeqStackptr sp);/*初始化棧置空棧*/(3)int EmptyStack (SeqStackptr sp);/*判???/(4)int FullStack (SeqStackptr sp);/*判棧滿*/(5)void Push (SeqStackptr sp, datatype x);/*進棧(元素壓入棧頂)*/(6)datatype Pop (SeqStackptr sp);/*出棧(元素從棧頂彈出)*/(7)datatype GetTop (SeqStackptr sp);/*讀棧頂元素(不出
3、棧)*/(8)int Count (SeqStackptr sp);/*計算棧中元素個數*/任務二:創建一個新的程序文件sy13.cpp,請調用seqStack.h提供的順序棧操作的函數完成把源文本文件中的所有十進制數轉換成相應的指定進制的數值存于新的文本文件中,要求定義如下函數:(1)void Trans(int n, int r, char str)功能:把n整數轉換為r進制的值并存于str數組中;(2)void TransFile(int r,char strin,char strout);功能:把strin文件中十進制整數轉換為r進制的值并存于文件strout中。其中strin和str
4、out字符數組中分別存放源文件名和目標文件名。(思路:1. 以只讀方式打開strin中的文件,以只寫方式打開存于strout中的文件 2. 循環讀取strin文件 (1)讀一個整數到變量num中 (2)調用Trans函數將num轉換為r進制的字符串result (3)將字符串result寫入到文件strout中 3. 關閉strin文件,strout文件。)(3)main函數中準備指定進制r的值,源文件名和目標文件名,調用TransFile函數完成相應要求。2請回答下列問題(1)棧是限定在表的一端進行插入或刪除操作的線性表,其操作原則是 后進先出 。(2)一個不帶表頭結點鏈棧的棧頂指針是top
5、,每個結點包含值域data和指針域next,判斷棧空的條件為 top=NULL ,當p所指向的結點入棧,首先執行 判斷棧是否滿 ,然后執行 p->datap->top+=x 操作。(3)設數組S100存儲一個順序棧的元素,變量top指示下一個入棧元素在數組中的下標位置,棧為空的條件是 top-1=NULL ,棧為滿的條件是 top>=100 。3seqStack.h及sy13.cpp源程序清單(含必要的注釋)SeqStack.h:#include<stdio.h>#include<stdlib.h>#define MAX 100typedef char
6、 datatype;typedef struct datatype dataMAX;int top;SeqStack, *SeqStackptr;SeqStack s;SeqStackptr sp;void Error(char *s); /*自定義錯誤處理函數*/void InitStack(SeqStackptr sp); /*初始化棧置空棧*/int EmptyStack(SeqStackptr sp); /*判棧空*/int FullStack(SeqStackptr sp); /*判棧滿*/void Push(SeqStackptr sp, datatype x); /*進棧(元素壓
7、入棧頂)*/datatype Pop(SeqStackptr sp); /*出棧(元素從棧頂彈出)*/datatype GetTop(SeqStackptr sp); /*讀棧頂元素(不出棧)*/int Count(SeqStackptr sp); /*計算棧中元素個數*/void Error(char *s) /*自定義錯誤處理函數*/printf("n %s", s);exit(1); /*返回OS,該函數定義在stdlib.h中*/void InitStack(SeqStackptr sp) /*初始化棧置空棧*/sp->top = 0;int EmptySta
8、ck(SeqStackptr sp) /*判棧空*/return sp->top = 0; /*返回值為1,棧空;返回值為0,棧不空*/int FullStack(SeqStackptr sp) /*判棧滿*/return sp->top >= MAX; /*返回值為1,棧滿;返回值為0,棧不滿*/void Push(SeqStackptr sp, datatype x) /*進棧(元素壓入棧頂)*/if (FullStack(sp) /*若棧滿*/Error("Stack Full");sp->datasp->top = x;sp->t
9、op+;datatype Pop(SeqStackptr sp) /*出棧(元素從棧頂彈出)*/if (EmptyStack(sp) /*若???/Error("Stack Empty");sp->top-;return sp->datasp->top;datatype GetTop(SeqStackptr sp) /*讀棧頂元素(不出棧)*/if (EmptyStack(sp) /*若棧空*/Error("Stack Empty");return sp->datasp->top - 1;int Count(SeqStack
10、ptr sp) /*計算棧中元素個數*/return sp->top;sy13.cpp:#include"seqStack.h"void Trans(int n, int r, char str); /*把n整數轉換為r進制的值并存于str數組中*/void TransFile(int r, char strin, char strout); /*把strin文件中十進制整數轉換為r進制的值并存于文件strout中。其中strin和strout字符數組中分別存放源文件名和目標文件名*/void main() int r;char sMAX, tMAX;printf(&
11、quot;請輸入進制r的值:");scanf("%d", &r);TransFile(r, s, t);void Trans(int n, int r, char str) /*把n整數轉換為r進制的值并存于str數組中*/int i, c;SeqStack s;InitStack(&s);do c = n%r;if (c < 10) c = c + '0'else c = c - 10 + 'a'Push(&s, c); while (n /= r);i = 0;while (!EmptyStack(
12、&s) stri+ = Pop(&s);stri = '0'void TransFile(int r, char strin, char strout) /*把strin文件中十進制整數轉換為r進制的值并存于文件strout中。其中strin和strout字符數組中分別存放源文件名和目標文件名*/int num, i, n;char resultMAX;FILE *fin;FILE *fout;if (fin = fopen("D:/strin.txt", "r") = NULL) Error("Can not open file!");if (fout = fopen("D:/strout.txt", "w") = NULL) Error("Can not open file!");fprintf(fout, "源數據轉化為%d進制后為:n", r);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鄉村醫生考試題庫:農村常見傳染病防治傳染病預防知識試題
- 2025年短劇行業營銷分析報告:智AI伴飛
- 媒體信息流控制策略
- 南寧市新提拔領導干部任前法律知識培訓模擬試題三
- 南安市中考二??荚囌Z文試題(圖片版無答案)
- 2025年安全生產網絡知識競賽題庫及答案(90題)
- 2025年上海楊浦郵政發布崗位招聘考試筆試試題(含答案)
- 海洋經濟區域競爭力分析
- 2025年安全員個人述職報告參考范文(七)
- 按揭購房合同書含貸款稅費裝修產權過戶售后服務
- 2025年四川省成都市新都區特需人才引進34人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 和合文化與國際傳播
- 煤礦急救知識培訓課件
- 梅毒課件完整版本
- 中國文化概論知識試題與答案版
- 《改善思維轉變觀念》課件
- 《中國胃食管反流病診療規范》(2023版)解讀課件
- 高中語文 小說閱讀理解題及答案
- 課題2 化學方程式第2課時 教學設計 九年級化學上冊(人教版2024)
- 骨科患者便秘的護理
- 匯川技術的在線測評
評論
0/150
提交評論