




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)三 順序棧操作實(shí)現(xiàn)實(shí)驗(yàn)日期: 2017 年 4 月 1 日 實(shí)驗(yàn)?zāi)康募耙?. 熟練掌握棧的結(jié)構(gòu),以及這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn);2. 能夠在兩種存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)棧的基本運(yùn)算,特別注意棧滿和??盏呐袛鄺l件及描述方法。實(shí)驗(yàn)內(nèi)容已知順序棧的類型定義如下:#define MAX 100typedef char datatype;typedef struct datatype dataMAX; int top;SeqStack, *SeqStackptr; 任務(wù)1題目要求任務(wù)一:創(chuàng)建自定義頭文件seqStack.h,包含順序棧的數(shù)據(jù)類型定義及基本操作函數(shù),需定義的基本操作如下:(1)void Error(c
2、har *s);/*自定義錯(cuò)誤處理函數(shù)*/(2)void InitStack (SeqStackptr sp);/*初始化棧置空棧*/(3)int EmptyStack (SeqStackptr sp);/*判棧空*/(4)int FullStack (SeqStackptr sp);/*判棧滿*/(5)void Push (SeqStackptr sp, datatype x);/*進(jìn)棧(元素壓入棧頂)*/(6)datatype Pop (SeqStackptr sp);/*出棧(元素從棧頂彈出)*/(7)datatype GetTop (SeqStackptr sp);/*讀棧頂元素(不出
3、棧)*/(8)int Count (SeqStackptr sp);/*計(jì)算棧中元素個(gè)數(shù)*/任務(wù)二:創(chuàng)建一個(gè)新的程序文件sy13.cpp,請(qǐng)調(diào)用seqStack.h提供的順序棧操作的函數(shù)完成把源文本文件中的所有十進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的指定進(jìn)制的數(shù)值存于新的文本文件中,要求定義如下函數(shù):(1)void Trans(int n, int r, char str)功能:把n整數(shù)轉(zhuǎn)換為r進(jìn)制的值并存于str數(shù)組中;(2)void TransFile(int r,char strin,char strout);功能:把strin文件中十進(jìn)制整數(shù)轉(zhuǎn)換為r進(jìn)制的值并存于文件strout中。其中strin和str
4、out字符數(shù)組中分別存放源文件名和目標(biāo)文件名。(思路:1. 以只讀方式打開strin中的文件,以只寫方式打開存于strout中的文件 2. 循環(huán)讀取strin文件 (1)讀一個(gè)整數(shù)到變量num中 (2)調(diào)用Trans函數(shù)將num轉(zhuǎn)換為r進(jìn)制的字符串result (3)將字符串result寫入到文件strout中 3. 關(guān)閉strin文件,strout文件。)(3)main函數(shù)中準(zhǔn)備指定進(jìn)制r的值,源文件名和目標(biāo)文件名,調(diào)用TransFile函數(shù)完成相應(yīng)要求。2請(qǐng)回答下列問題(1)棧是限定在表的一端進(jìn)行插入或刪除操作的線性表,其操作原則是 后進(jìn)先出 。(2)一個(gè)不帶表頭結(jié)點(diǎn)鏈棧的棧頂指針是top
5、,每個(gè)結(jié)點(diǎn)包含值域data和指針域next,判斷??盏臈l件為 top=NULL ,當(dāng)p所指向的結(jié)點(diǎn)入棧,首先執(zhí)行 判斷棧是否滿 ,然后執(zhí)行 p->datap->top+=x 操作。(3)設(shè)數(shù)組S100存儲(chǔ)一個(gè)順序棧的元素,變量top指示下一個(gè)入棧元素在數(shù)組中的下標(biāo)位置,棧為空的條件是 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); /*自定義錯(cuò)誤處理函數(shù)*/void InitStack(SeqStackptr sp); /*初始化棧置空棧*/int EmptyStack(SeqStackptr sp); /*判???/int FullStack(SeqStackptr sp); /*判棧滿*/void Push(SeqStackptr sp, datatype x); /*進(jìn)棧(元素壓
7、入棧頂)*/datatype Pop(SeqStackptr sp); /*出棧(元素從棧頂彈出)*/datatype GetTop(SeqStackptr sp); /*讀棧頂元素(不出棧)*/int Count(SeqStackptr sp); /*計(jì)算棧中元素個(gè)數(shù)*/void Error(char *s) /*自定義錯(cuò)誤處理函數(shù)*/printf("n %s", s);exit(1); /*返回OS,該函數(shù)定義在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) /*進(jìn)棧(元素壓入棧頂)*/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) /*計(jì)算棧中元素個(gè)數(shù)*/return sp->top;sy13.cpp:#include"seqStack.h"void Trans(int n, int r, char str); /*把n整數(shù)轉(zhuǎn)換為r進(jìn)制的值并存于str數(shù)組中*/void TransFile(int r, char strin, char strout); /*把strin文件中十進(jìn)制整數(shù)轉(zhuǎn)換為r進(jìn)制的值并存于文件strout中。其中strin和strout字符數(shù)組中分別存放源文件名和目標(biāo)文件名*/void main() int r;char sMAX, tMAX;printf(&
11、quot;請(qǐng)輸入進(jìn)制r的值:");scanf("%d", &r);TransFile(r, s, t);void Trans(int n, int r, char str) /*把n整數(shù)轉(zhuǎn)換為r進(jìn)制的值并存于str數(shù)組中*/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文件中十進(jìn)制整數(shù)轉(zhuǎn)換為r進(jìn)制的值并存于文件strout中。其中strin和strout字符數(shù)組中分別存放源文件名和目標(biāo)文件名*/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, "源數(shù)據(jù)轉(zhuǎn)化為%d進(jìn)制后為:n", r);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電競(jìng)教練崗位面試問題及答案
- 創(chuàng)業(yè)培訓(xùn)師崗位面試問題及答案
- 沖壓件銷售員崗位面試問題及答案
- 在線教育班主任崗位面試問題及答案
- 河北省巨鹿縣第二中學(xué)2025年高二化學(xué)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 江西省贛州市寧都縣第三中學(xué)2025屆高二下化學(xué)期末綜合測(cè)試試題含解析
- 2025屆遼寧省葫蘆島市協(xié)作校高二化學(xué)第二學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 公共投資項(xiàng)目管理辦法
- 民間捐贈(zèng)資金管理辦法
- 2026屆高三復(fù)習(xí)之閱讀理解-議論文(復(fù)習(xí)講義)(帶解析)
- 皮膚科病人的藥物不良反應(yīng)護(hù)理與預(yù)防
- 擊劍俱樂部項(xiàng)目融資計(jì)劃書
- 郴電國(guó)際變電站一線值班員筆試
- 科研項(xiàng)目管理及科技成果申報(bào)
- 個(gè)人借條電子版模板
- 醫(yī)藥阿片類藥物依賴診斷治療指導(dǎo)原則
- 業(yè)主驗(yàn)房發(fā)現(xiàn)問題記錄單
- 2023年醫(yī)技類-康復(fù)醫(yī)學(xué)(副高)考試上岸題庫(kù)(歷年真題)答案
- 工程公司簡(jiǎn)介(50個(gè)范本)
- GC/T 1401-2022國(guó)家物資儲(chǔ)備標(biāo)志及使用規(guī)范
- JJF 1334-2012混凝土裂縫寬度及深度測(cè)量?jī)x校準(zhǔn)規(guī)范
評(píng)論
0/150
提交評(píng)論