數(shù)據(jù)結(jié)構(gòu)棧十進(jìn)制轉(zhuǎn)八進(jìn)制的算法詳解(已測(cè)試過)_第1頁
數(shù)據(jù)結(jié)構(gòu)棧十進(jìn)制轉(zhuǎn)八進(jìn)制的算法詳解(已測(cè)試過)_第2頁
數(shù)據(jù)結(jié)構(gòu)棧十進(jìn)制轉(zhuǎn)八進(jìn)制的算法詳解(已測(cè)試過)_第3頁
數(shù)據(jù)結(jié)構(gòu)棧十進(jìn)制轉(zhuǎn)八進(jìn)制的算法詳解(已測(cè)試過)_第4頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.實(shí)驗(yàn)?zāi)康慕?shí)現(xiàn)十進(jìn)制轉(zhuǎn)八進(jìn)制實(shí)驗(yàn)容編程序并上機(jī)調(diào)試運(yùn)行。建立棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)八進(jìn)制1. 編寫程序/ 十進(jìn)制轉(zhuǎn)八進(jìn)制#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct int *base;int *top;int stacksize;sqstack;.int initstack (sqstack *s)s->base=(int *)malloc(STACK_INIT

2、_SIZE * sizeof(int);if(!s->base)exit(0);s->top=s->base;s->stacksize =STACK_INIT_SIZE ;return 0;/ 構(gòu)造一個(gè)空棧 sint push(sqstack *s,int e) if(s->top-s->base)>=s->stacksize)s->base=(int*)realloc(s->base,(s->stacksize +STACKINCREMENT )*sizeof(int);if(!(s->base) exit(1);s-&

3、gt;top=s->base+s->stacksize;s->stacksize+=STACKINCREMENT;*s->top+=e;return 0;./ 插入新的元素 e 為新的棧頂元素int stackempty (sqstack *s)if(s->top=s->base)return 1;else return 0;/ 若棧 s 為空棧,則返回 1,否則返回 0int pop (sqstack *s,int *e)if(s->top=s->base)return 1;*e=*-s->top;return 0;/ 若棧不為空,則刪除

4、s 的棧頂元素,用 e 返回其值,返回 OK,否則返回ERROR.void conversion (int n) sqstack s; int e;initstack(&s);printf(" 請(qǐng)輸入一個(gè)十進(jìn)制數(shù): n"); scanf("%d",&n);while (n) push(&s,n%8); n=n/8;printf("n");printf("該數(shù)的八進(jìn)制數(shù)為: n");while(!stackempty(&s)pop(&s,&e);printf("

5、;%d",e);printf("n");/ 對(duì)于輸入的任意一個(gè)非負(fù)十進(jìn)制整數(shù),打印出與其等值的八進(jìn)制數(shù).int main()int n;/sqstack *s;/ initstack(s); conversion (n);return 0;/ 主函數(shù)運(yùn)行程序:.程序解析:1. 首先是將程序的開頭寫好,要有 #include<stdlib.h> ,然后定義STACK_INIT_SIZE 為 100 ,STACKINCREMENT為10 。定義棧頂和棧底都為int型,并且 stacksize為 int型。2. 構(gòu)建一個(gè)空棧。建立一個(gè)空棧, 但建立不成功是就

6、強(qiáng)制退出, 建立成功時(shí)就使棧頂和棧頂指向同一個(gè)點(diǎn),并且分配預(yù)定長(zhǎng)度的節(jié)給stacksize 。3. 插入新的元素 e 為新的棧頂元素.插入一個(gè)新的元素到棧里,如果長(zhǎng)度超過棧的長(zhǎng)度,則重新分配新的空間給sqstack 。如果棧底部存在則發(fā)生錯(cuò)誤,意外退出。然后讓e 插入成為新的棧頂元素。4. 判斷棧是否為空棧。該函數(shù)用 stackempty 表示,如果棧頂?shù)扔跅5?,則棧為空棧,返回1,否則返回 0.5. 取出棧頂元素若棧為空,則返回1,若棧不為空,則讓e 指向 s 的棧頂元素,刪除s 的棧頂元素,用 e 返回其值。.6. 建立 conversion函數(shù)定義一個(gè)空棧 s,然后 scanf 輸入一個(gè)數(shù),當(dāng)該數(shù)不為0 時(shí),就執(zhí)行 push函數(shù)和 n=n/8 ,如果 n=0 則跳出循環(huán)。 然后

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論