2023年數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告棧進(jìn)制轉(zhuǎn)換_第1頁
2023年數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告棧進(jìn)制轉(zhuǎn)換_第2頁
2023年數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告棧進(jìn)制轉(zhuǎn)換_第3頁
2023年數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告棧進(jìn)制轉(zhuǎn)換_第4頁
2023年數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告棧進(jìn)制轉(zhuǎn)換_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告

棧的應(yīng)用一一進(jìn)制轉(zhuǎn)換程序

姓名I班級(jí)I學(xué)號(hào)一

算法環(huán)節(jié):

1.定義棧與建立空棧

typedefstruct{

int*base;

oint*top;

intstacksize;

}Stack;

intInitStack(Stack*s)

(

s->base=(int*)malloc(STACKINITSIZE*sizeof(int));

。if(!s—>base)

(

。exit(0VERFLOW);

)

。s->top=s->base;

。s->stacksize-STACK_INIT_SIZE;

。returnOK;

)

2.入棧程序

intPush(Stack*s,int*e)

(

if(s->top-s->base>=STACK_INIT_SIZE)

0(

ss->base=(int*)rea1loc(s->base,(s->stacksize+

STACKINCREMENT)*sizeof(int));

?oif(!s->base)

O0{

。oexit(OVERFLOW);

O0}

。。s->top=s->base+STACKINCREMENT;

6)

*s->top++=*e;

sreturnOK;

}

3.出棧程序

intPop(Stack*s,int*e)

(

oif(s->top==s->base)

°(

returnERROR;

。)

。初二*—s->top;

returnOK;

)

4.主函數(shù)與進(jìn)制轉(zhuǎn)化

voidmain()

(

intN;

inta;

。inte;

Stacks;

InitStack(&s);

Pop(&s,&e);

Push(&s,&e);

oInitStack(&s);

。printf(〃請(qǐng)輸入十進(jìn)制數(shù):“);

scanf(〃%d〃,&N);

。printf(〃要將N轉(zhuǎn)化為幾進(jìn)制?〃);

scanf(n%d”,&a);

。while(N)

6{

。3e=N%a;

Push(&s,&e);

N=N/a;

6)

owhile(s.base!=s.top)

6{

。Pop(&s,&e);

printf("%d〃,e);

)

free(s.base);

system(z,pause”);

)

3.源程序

ttinc1ude<stdio.h>

ftinclude<ma11oc.h>

#include<stdlib.h>

ttdefineSTACK_INIT_SIZE100

#defineSTACKINCREMENT10

#defineOK1

ftdefineERROR0

#defineOVERFLOW-1

#defineTRUE1

#defineFALSE-1

typedefstruct{

int*base;

int*top;

intstacksize;

}Stack;

intInitStack(Stack*s)

(

s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));

oif(!s—>base)

6{

exit(OVERFLOW);

)

。s->top=s->base;

s->stacksize=STACK_INIT_SIZE;

returnOK;

)

intPush(Stack*s,int*e)

(

if(s->top-s->base>=STACK_INIT_SIZE)

(

。s—>base=(int*)realloc(s->base,(s->stacksize+STACKINCR

EMENT)*sizeof(int));

oif(!s->base)

0(

6。exit(OVERFLOW);

0}

s->top=s->base+STACKINCREMENT;

。)

0*s->top++=*e;

returnOK;

)

intPop(Stack*s,int*e)

。if(s->top==s->base)

0{

o3returnERROR;

}

o*e=*-s->top;

。returnOK;

}

voidmain()

(

ointN;

inta;

inte;

Stacks;

InitStack(&s);

。Pop(&s,&e);

Push(&s,&e);

oInitStack(&s);

printf(〃請(qǐng)輸入十進(jìn)制數(shù):〃);

scanf(〃%d",&N);

printf(〃要將N轉(zhuǎn)化為幾進(jìn)制?〃);

seanf(〃%d〃,&a);

while(N)

6{

oe=N%a;

oPush(&s,&e);

ooN=N/a;

0)

。while(s.base!=s.top)

6{

Pop(&s,&e);

oprintf(M%dz,,e);

。}

free(s.base);

system("pause”);

)

調(diào)試與體會(huì)

.調(diào)試結(jié)果

s\iinzhi\Debug\iinzhi.exe

清藕人十班制效:1348

要塔N轉(zhuǎn)化為幾進(jìn)匍?2

101010001.00請(qǐng)按任意鍵繼續(xù)...

情輸入十進(jìn)制數(shù):1348

|要陶轉(zhuǎn)化為凡進(jìn)制?16

向4請(qǐng)接住意鍵繼續(xù)...

2.體會(huì)

這次數(shù)據(jù)結(jié)構(gòu)作業(yè)我選擇了做進(jìn)制轉(zhuǎn)換,一方面我覺得這個(gè)比較有實(shí)際意義,另一方面

我覺得做迷宮

溫馨提示

  • 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)論