




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)告一一實(shí)驗(yàn)4
學(xué)號(hào):姓名:得分:
一、實(shí)驗(yàn)?zāi)康?/p>
1、復(fù)習(xí)線性表的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及基本操作;
2,掌握順序表和(帶頭結(jié)點(diǎn))單鏈表;
3、了解有序表。
二、實(shí)驗(yàn)內(nèi)容
1、(必做題)假設(shè)有序表中數(shù)據(jù)元素類型是整型,請(qǐng)采用順序表或(帶頭結(jié)點(diǎn))單鏈表實(shí)現(xiàn):
(1)OrderInsert(&L,e,int(*compare)(a,b))
//根據(jù)有序鑒定函數(shù)compare,在有序表L的適當(dāng)位置插入元素e;
(2)0rderlnput(&L,int(*compare)(a,b))
〃根據(jù)有序鑒定函數(shù)compare,并運(yùn)用有序插入函數(shù)OrderInsert,構(gòu)造有序表L;
(3)OrderMerge(&La,&Lb,&Lc,int(*compare)())
〃根據(jù)有序鑒定函數(shù)compare,將兩個(gè)有序表La和Lb歸并為一個(gè)有序表Lc。
2、(必做題)請(qǐng)實(shí)現(xiàn):
(1)升基多項(xiàng)式的構(gòu)造,升基多項(xiàng)式是指多項(xiàng)式的各項(xiàng)按指數(shù)升序有序,約定系數(shù)不能等于0,指數(shù)不能小
于0;
(2)兩個(gè)升幕多項(xiàng)式的相加。
三、算法描述
(采用自然語(yǔ)言描述)
1.
創(chuàng)建帶頭節(jié)點(diǎn)的鏈表,
輸入兩個(gè)有序表數(shù)據(jù)LaLb
歸并兩個(gè)有序表得有序表Lc
輸出三個(gè)有序表
輸入需插入數(shù)據(jù)e
將e插入有序表Lc
輸出插入e后的Lc
2.
創(chuàng)建鏈表
按指數(shù)升序輸入多項(xiàng)式得序數(shù)和指數(shù)
輸出多項(xiàng)式
按指數(shù)升序輸入第二個(gè)多項(xiàng)式得序數(shù)和指數(shù)
兩個(gè)多項(xiàng)式相加
輸出第二個(gè)多項(xiàng)式和兩個(gè)多項(xiàng)式得和
四、具體設(shè)計(jì)
(畫出程序流程圖)
2.
她擊
五、程序代碼
(給出必要注釋)
1.
#inc1ude<stdio.h>
#inc1ude<mal1oc.h>
typedefstructLNode
(
intdate;
structLNode*next;
}LNode,*Link;
typedefstructLinkList
(
Linkhead;//頭結(jié)點(diǎn)
intlenth;//鏈表中數(shù)據(jù)元素的個(gè)數(shù)
}LinkList;
intcompare(LinkList*L,inte)//有序鑒定函數(shù)compare
(
intLc=0;
Linkp;
p=L—>head;
p=p—>next;
while(p!=NULL)
if(e>p->date)
p=p->next;
Lc++;
}
else
returnLc;
)
returnLc;
)
voidOrderlnsert(LinkList*L,inte,int(*compare)())//根據(jù)有序鑒定函數(shù)compare,在有序表L
的適當(dāng)位置插入元素e;
(
Linktemp,p,q;
intLc,i;
temp=(Link)malloc(sizeof(LNode));
temp->date=e;
p=q=L->head;
p=p->next;
Lc=(*compare)(L,e);
if(Lc==L->lenth)
(
whi1e(q->next!=NULL)
q=q->next;
}
q->next=temp;
temp->next=NULL;
}
else
(
for(i=0;i<Lc;i++)
{
p=p->next;
q=q->next;
)
q->next=temp;
temp->next=p;
)
++L->lenth;
)
voidOrderMerge(LinkList*La,LinkList*Lb,int(*compare)())//根據(jù)有序鑒定函數(shù)c
ompare,將兩個(gè)有序表La和Lb歸并為一個(gè)有序表
(
inti,Lc=0;
Linktemp,p,q;
q=La->head—>next;
whi1e(q!=NULL)
(
p=Lb—>head;
temp=(Link)ma11oc(sizeof(LNode));
temp->date=q->date;
Lc=(*compare)(Lb,q->date);
if(Lc==Lb->lenth)
(
while(p—>next!=NULL)
(
p=p->next;
)
p->next=temp;
temp—>next=NULL;
I
else
(
for(i=0;i<Lc;i++)
{
p=p->next;
}
ternp->next=p->next;
p->next=temp;
)
q=q->next;
++Lb->lenth;
LinkList*Initialize(LinkList*NewList)
inti;
Linktemp;
NewList=(LinkList*)malloc((2+l)*sizeof(LinkList));
for(i=0;i<2+l;i++)
(
ternp=(Link)mal1oc(sizeof(LNode));
temp->date=0;
temp->next=NULL;
(NewList+i)->head=temp;
(NewList+i)—>1enth=O;
)
returnNewList;
)
voidInsert(LinkList*NewList)
(
inta,i;
charc;
printf("在第1個(gè)表中插入數(shù)據(jù),輸入"N”再對(duì)下個(gè)表插入數(shù)據(jù)\n”);
for(i=0;i<2;i++)
(
while(1)
{
scanf("%d”,&a);
c=getchar();
if(c=='Nz)
if(i<2-2)
primf("在第%€1個(gè)表中插入數(shù)據(jù),輸入“N”再對(duì)下個(gè)表插入數(shù)據(jù)
\n",i+2);
eIseif(i==2-2)
printff在第%<1個(gè)表中插入數(shù)據(jù),輸入“N”結(jié)束。\n”,i+2);
break;
)
else
(
Orderinsert((NewList+i),a,compare);
voidShow(LinkList*L)〃輸出有序表
(
Linkp;
p=L->head->next;
while(p!=NULL)
(
printf("%dp->date);
p=p->next;
)
voidvisit(LinkList*NewList,void(*Show)())
printf(H有序表如下:\n");
printf("第一個(gè)有序表為:\n");
(*Show)(NewList+0);
printf("\n“);
printf("第二個(gè)有序表為:\n");
(*Show)(NewList+1);
printf(M\n”);
printf("歸并后有序表為:\n”);
(*Show)(NewList+2);
printf(“\n");
)
intmain()
(
LinkList*NewList=NULL;
LinkList*L;
inti,e;
printf("請(qǐng)按規(guī)定輸入數(shù)據(jù)\n”);
NewList=Initialize(NewList);
Insert(NewList);
for(i=0;i<2;i++)
OrderMerge(NewList+i,NewList+2,compare);
visit(NewList,Show);
L=NewList;
printf(n\n請(qǐng)輸入將要插入的e:\n");
seanf("%dn,&e);
Orderinsert((NewList+i),e,compare);
Printf("對(duì)歸并后有序表插入e后得\n”);
Show(NewList+2);
return0;
)
2.
#include<stdio.h>
#include<malloc.h>
typedefstructnode
(
intxi;
intzi;
struetnode*next;
}Node;
Node*Creat()〃用鏈表儲(chǔ)存多項(xiàng)式的序數(shù)與指數(shù)
(
Node*head,*p,*q;
intor,in;
head=(Node*)mal1oc(sizeof(Node));
head->next=NULL;
q=head;
printf(”請(qǐng)輸入多項(xiàng)式的序數(shù)與指數(shù)\n(注意:按照指數(shù)升序輸入,系數(shù)不能等于0且指數(shù)不能小于
0,序數(shù)與指數(shù)用空格隔開,并以00結(jié)束輸入)\n“);
seanf("%d%d,,,&or,&in);
while(or)
(
p=(Node*)ma1loc(sizeof(Node));
p->xi=or;
p->zi=in;
p—>next=q—>next;
q->next=p;
q=P;
scanf(u%d%d",&or,&in);
)
returnhead;
)
voidvisit(Node*head)//輸出多項(xiàng)式
(
Node*p=head->next;
while(p)
(
printf("%dXA%d+n,p->xi,p->zi);
p=p->next;
)
printf("NULL\n\nH);
Node*Add(Node*headl,Node*head2)〃多項(xiàng)式相力口
{
Node*p,*head,*pl,*p2;
intsum;
head=(Node*)malloc(sizeof(Node));
p=head;
pl=head1->next;
p2=head2->next;
while(p1&&p2)〃當(dāng)兩多項(xiàng)式都存在時(shí)
(
if(p1->zi==p2->zi)〃假如指數(shù)相等
(
sum=pl->xi+p2->xi;
if(sum)
{
pl->xi=sum;
p->next=pl;
P=P1;
)
pl=p1->next;
p2=p2->next;
else〃指數(shù)不相等分兩種情況
if(pl->zi<p2—>zi)
p->next=p1;
p=pl;
p1=p1->next;
)
else
(
p->next=p2;
P=P2;
p2=p2->next;
)
)
)
if(pl)p->next=p1;//將1中剩余結(jié)點(diǎn)接到和鏈表中由于最終只剩下一段鏈表多項(xiàng)式
eIsep->next=p2;〃將2中剩余結(jié)點(diǎn)接到和鏈表中這段鏈的鏈頭接到目的鏈表就可以了
returnhead;
)
intmain()
(
printf("請(qǐng)輸入第一個(gè)多項(xiàng)式\n”);
Node*head,*p1,*p2;
p1=Creat();
pri
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物教學(xué)活動(dòng)設(shè)計(jì)與安排計(jì)劃
- 應(yīng)急管理部門保安工作的執(zhí)行與評(píng)估計(jì)劃
- 全面解析2024年陪診師考試要點(diǎn)及試題及答案
- 2024年全球金融市場(chǎng)趨勢(shì)試題及答案
- 江西西部計(jì)劃與企業(yè)責(zé)任試題答案解析
- 注冊(cè)會(huì)計(jì)師與精算師考試共通性試題及答案
- 2024年十月份文職崗位勞動(dòng)合同嵌入眼動(dòng)追蹤測(cè)試項(xiàng)
- 代碼優(yōu)化技巧的試題及答案
- 投資咨詢工程師關(guān)鍵因素分析試題及答案
- 大班美術(shù)美麗房子
- DB45T 2611-2022 老鼠簕質(zhì)量控制技術(shù)規(guī)程
- 2023年4月1日江蘇省事業(yè)單位統(tǒng)考《綜合知識(shí)和能力素質(zhì)》(管理崗客觀題)原卷+答案
- 《產(chǎn)業(yè)投資》課件
- 呼吸系統(tǒng)體格檢查
- 智研咨詢發(fā)布:中國(guó)水性油墨行業(yè)發(fā)展現(xiàn)狀、產(chǎn)業(yè)全景概覽及投資方向分析報(bào)告
- 100以內(nèi)數(shù)的認(rèn)識(shí)-比較大小(教案)人教版一年級(jí)下冊(cè)數(shù)學(xué)
- 燃?xì)夤艿辣Wo(hù)專項(xiàng)方案2
- 舞臺(tái)劇聯(lián)合投資協(xié)議書模板
- -小學(xué)英語(yǔ)人稱代詞與物主代詞講解課件(共58張課件).課件
- 2024年山東省濟(jì)南市中考化學(xué)試卷( 含答案)
- 《中國(guó)詩(shī)詞大會(huì)》九宮格(原題)
評(píng)論
0/150
提交評(píng)論