版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【基本穗雪題】
1.if參照[ffl3.4a的table障列,如果先在「中閾」之彼加入「法閾」,然彼在「嘛
俄」之彼加入「澳大利我:
A.Iff重出最彼的table障列。
B.Iff以四串列圃示法表示table障列。
答:
(A)
datanext
table[O]3
tablefl]美a6
table[2]法閾1
table[3]中a2
table[4]澳大利克0
table[5]-1
tablef6]英ISI7
table[7]俄4
table[8]-1
(B)
2.有一^^性曼向㈱串列示意圈如下:
Head
若欲符此曼向蠅串列表示在下面的障列中,完成其他部分。
答:
dataleftright
table[O]05
tablefl]
table[2]3836
table[3]9952
table[4]
table[5]8103
table[6]5620
table[7]
table[8]
3.程式慮理稀疏矩睡(sparsematrix)冏題畤,如考感g(shù)空^的需求,
哪一槿資料結(jié)橫最焉遹合?
答:^系吉串列。
4.承上堰,明慮理稀疏矩障冏題畤,每他非零項(xiàng)的結(jié)情如何?加且以
c/c++^言骰IHS槿結(jié)情。
答:每值1菅行黠可以B1示篇:
rowcoldata
downright
每彳固fi5黑的吉情有3彳固資料橄位一data、row、col,遐有雨橄位一right、
down。同一列的^黑占藉著right結(jié)成:B-f固串列,同一行詹靄占也藉著down
結(jié)成篇一彳固串列。
^黑占的結(jié)情可以宣告:B:
1.typedefstructtagMListNode
2.{floatdata;/〃系數(shù)楠位
3.introw,col;〃列虢及行虢
4.structtagMListNode"right,*down;〃列指檄及行指檄
5.}MListNode;
5.?程式慮理高次少項(xiàng)的多項(xiàng)式(polynomial)冏題畤,如考儲存空^的
需求,哪一槿資料結(jié)情最焉遹合?
答:串列。
6.承上堰,明虞理多項(xiàng)式冏題畤,每他非零項(xiàng)的結(jié)情如何?加且以
c/c++^言槿結(jié)情。
答:每偃IfiS黠必須包含雨他資料橄位:保數(shù)橄位和幕次橄位,以及一^^^橄位。
黑舔卦薄可以11示焉:
幕次
繇吉情可以宣告篇:
1.typedefstructtagPListNode
2.{floatcoef;〃4系數(shù)
3.intexpo;〃幕次
4.structtagPListNode*next;〃^系吉指襟
5}PListNode;
7.勤熊配置fp黠的^^串列如下,若耕行prin般"%d”,q->next->data)(或是
cout?q->next->data)曾印出什麼?
8.承上題,若孰行
for(i=1;i<9;i++)
p=p->next;
printf("%d”,p?>data);//或是cout?p->data;
曾印出什麼?
答:1。
【迤E皆穗雪題】
1.承基本穗雪題第7題,若要插入由指襟n所指到的新IP黠至指檄p所指到的
IP黠之彼,第一步須軌行何敘述?1?^明此敘述。
答:n->next=p->next;
n
2.承基本穗看1題第7題,若要刪除由指檄p所指到的^黠,第一步須軌行何敘
述?It重明此敘述。
答:q->next=p->next;
3.在蜀渡§配置窗i黠的曼向璃伏^^串列中,若每黠都有三他橄位:left,data,
righto若要插入由指檄n所指到的新^黠至指檄p所指到的^黠之右,m
行哪些敘述?it重圈^明。
答:1.n->left=p;
2.n->right=p->right;
3.p->right->left=n;
4.p->right=n;
4.在勤憩配置iti黠的曼向震伏^^串列中,若每黠都有三他橄位:left,data,
right。假^要刪除由指檄p所指到的^黠,須軌行哪些敘述?It重明。
答:1.p->left->right=p->right;
2.p->right->left=p->left;
1
P
5.假^一他蠅串列上的n已^按照^黠資料方F序好,冏要搜尊一他
^黠的畤^頻度焉何?
答:0(n)
6.假^一他蠅串列上的n他管i黠加未按照曾i黠資料排序好,If冏要搜尊一他
^黠的畤^頻度焉何?
答:0(n)
【程式題】
1.^完成3.3.3IP的GetFreeNode副程式(取得空fp黠)。
答:
unsignedGetFreeNode(NODEtable[J)
(
unsignedi;
for(i=l;i<=MAX_NODE;i++)
if(table[i].next==-1)
returni;
return0;
}
2.嘉一函式,能在一他曼向璟狀蹦串列中,符每偃|曾?黠的data(資料)橄位
依序印出(勤熊配置15黠的^^串列)。
答:
voidPrintList(Dnode*head)
(
Dnode*p=head;
for(p=p->right;p!=head;p=p->right)
printf(n%d",p->data);//cout?p->data;
3.嘉一函式,能根操參數(shù)value的值,在head串列中找到某一他黠(搜尊)。
假^此串列是曼向瓚伏繳§串列。
DListNode*search(DListNode*head,intvalue)
{/*在head串列中,找到橄位;gvalue的^黠,找到道即隅回此直行黑占的位址,
找不到?;豊ULL。*/
答:
typedefstructdlist_node
(
structdlist_node*left;
intdata;
structdlist_node*right;
JDnode;
Dnode*Search(Dnode*head,intvalue)
{Dnode*p=head;
for(p=p->right;(p!=head)&&(p->data!=value);p=p->right);
if(p==head)
returnNULL;
returnp;
)
4.根撮3.5串列的建立、增加和刪除:
A.完成3.5.6的CreatList函式。
B.嘉一他完整程式,能建立串列,加且根操使用者由維籃輸入的指令,而勤
熊地軌行插入和刪除。
答:
#include<stdio.h>
#include<stdlib.h>
typedefstructlistnode
(
intdata;/*資料橄位*/
structlistnode*next;/*娥5吉橢位*/
}Node;
intInsertAfter(Node*p,intvalue)
{Node*newnode;
newnode=(Node*)malloc(sizeof(Node));
if(newnode==NULL)
return(0);
newnode->data=value;
newnode->next=p->next;
p->next=newnode;
return(l);
intDeleteNode(Node*head,Node*node)
{Node*GetPreNode(),*prenode;
if(head==node)
return0;
prenode=GetPreNode(head,node);
if(prenode==NULL)
return0;
prenode->next=node->next;
free(node);
return(l);
)
Node*GetPreNode(Node*head,Node*node)
{Node*p,*q;
p=head;
q=head->next;
while((q!=NULL)&&(q!=node))
{p=q;
q=q->next;
)
if(q!=NULL)
return(p);
else
return(NULL);
)
intInsertTail(Node*head,intvalue)
{Node*new_node,*p=head;
if((new_node=(Node*)malloc(sizeof(Node)))==NULL)
return(0);
new_node->data=value;
new_node->next=NULL;
while(p->next!=NULL)
p=p->next;
p->next=new_node;
return(1);
voidPrintList(Node*p)
{for(p=p->next;p!=NULL;p=p->next)
printf("%dH,p->data);
)
voidFreeAllNode(Node*head)
{Node*p=head->next,*q;
while(p!=NULL)
{q=p->next;
free(p);
p二q;
)
)
voidCreateList(Node*Head)
{FILE*fin;
intNodeData;
if((fin=fopen(,,list.in";,r,'))==NULL)
{printf(nFilecannotbeopened,programterminate.");
exit(l);
)
Head->next=NULL;
fscanf(fin,H%dM,&NodeData);
while(!feof(fin))
{InsertTail(Head,NodeData);
fscanf(fin,M%dM,&NodeData);
)
fclose(fin);
)
voidmain(void)
(
intchoose,i,NodeData,num;
NodeHead,*p;
CreateList(&Head);
while(l)
printf(n\n串列內(nèi)容(Contentoflist)=>n);
PrintList(&Head);
printf("\n(l)附力口直有黑占(Appendnewnode)\n(2)插入fp黑占(Insertnew
node)\n(3)刪除前J黑占(Deletenode)\n(0)系吉束(exit)=>");
scanf(,,%d',,&choose);
switch(choose)
case0:
FreeAllNode(&Head);/*釋放所有黑占*/
exit(O);/*結(jié)束程式*/
case1:
printf(髓輸入欲附加之資料(Inputnewdata)=>,');
scanf(n%d",&NodeData);
InsertTail(&Head,NodeData);
break;
case2:
printfC■輸入欲插入之瓷H(Inputnewdata)=>n);
scanf(n%dn,&NodeData);
printfC■輸入欲插入之位置(NewPosition)=>");
scanf(H%dH,&num);
for(i=l,p=&Head;i!=num&&p!=NULL;p=p->next,i++);
if(p==NULL)
printf("插入失敗(InsertFailed)");
elseif(InsertAfter(p,NodeData)==0)
printf("插入失敗(InsertFailed)*,);
break;
case3:
printf(咋靜t入欲刪除之資料(datatobedeleted)=>',);
scanf(,,%d',,&num);
for(i=0,p=&Head;p!=NULL&&p->data!=num;p=p->next,i++);
if(p==NULL)
printf("此資料不在串列中(thedataisnotinlist)”);
elseif(DeleteNode(&Head,p)==0)
printf("刪除失?。?DeleteFailed)11);
break;
default:
printf("逗項(xiàng)金昔(Wrongoption)!!");
List.in槽案
1234
5678
5.嘉一函式能符一罩向瞬串列斡向。
#include<stdio.h>
#include<stdlib.h>
typedefstructlistnode
{intdata;/*資料楠位*/
structlistnode*next;系寺橄位*/
}Node;
voidInvertList(Node*P,Node*Q,Node*R)
{if(Q=NULL)/修止脩件
R->next=P;
else
{InvertList(Q,Q?>next,R);〃遮迪呼叫
Q->next=P;
}
}
intInsertTail(Node*head,intvalue)
(
Node*new_node,*p=head;
if((new_node=(Node*)malloc(sizeof(Node)))==NULL)
return(0);
new_node->data=value;
new_node->next=NULL;
while(p->next!=NULL)
p=p->next;
p->next=new_node;
return(1);
voidPrintList(Node*p)
{for(p=p->next;p!=NULL;p=p->next)
printf(u%dn,p->data);
voidFreeAllNode(Node*head)
{Node*p=head->next,*q;
while(p!=NULL)
{q=p->next;
free(p);
p=q;
voidCreateList(Node*Head)
FILE*fin;
intNodeData;
if((fin=fopen(nlist.in'V,r"))==NULL)
{printf("Filecannotbeopened,programterminate.n);
exit(l);
Head->next=NULL;
fscanf(fin,"%du,&NodeData);
while(!feof(fin))
{InsertTail(Head,NodeData);
fscanf(fin,M%dn,&NodeData);
fclose(fin);
voidmain(void)
NodeHead;
CreateList(&Head);
printf(n\n串列內(nèi)容(Contentoflist)=>");
PrintList(&Head);
InvertList(NULL,Head.next,&Head);
printf(H\n反申事的串列內(nèi)容(InvertedContentoflist)=>");
PrintList(&Head);
printf(,,\nM);
6.嘉一完整程式,輸入雨他多項(xiàng)式,輸出多項(xiàng)式的和。
例如:
A(x)=5x4+6.&+29x+6
B(x)=9x5+3.2x2+4x+5
輸出:
C(x)=9x5+5x4+9.3x2+6.9x+11
答:
#include<stdio.h>
#include<stdlib.h>
typedefstructplistnode
{floatcoef;/*《系數(shù)*/
intexpo;/*暮次*/
structplistnode*next;
JPnode;
FILE*finl,*fin2;
Pnode*AddTail(Pnode*tail,floatco,intex)
{Pnode*p;
p=(Pnode*)malloc(sizeof(Pnode));
p->coef=co;
p->expo=ex;
p->next=NULL;
tail->next=p;
tail=p;
retum(tail);
Pnode*PolyAdd(Pnode*pa,Pnode*pb)
{Pnode*c,*ctail;
c=(Pnode*)malloc(sizeof(Pnode));
ctail=c;
pa=pa->next;
pb=pb->next;
while(pa&&pb)
{if(pa->expo>pb->expo)
{ctail=AddTail(ctail,pa->coef,pa->expo);
pa=pa->next;
)
elseif(pa->expo<pb->expo)
{ctail=AddTail(ctail,pb->coef,pb->expo);
pb=pb->next;
)
else
{if((pa->coef+pb->coef)!=0)
ctail=AddTail(ctail,pa->coef+pb->coef,pa->expo);
pa=pa->next;
pb=pb->next;
)
)
while(pa)
{ctail=AddTail(ctail,pa->coef,pa->expo);
pa=pa->next;
)
while(pb)
{ctail=AddTail(ctail,pb->coef,pb->expo);
pb=pb->next;
)
return(c);
)
voidRead_data(FILE*f,Pnode*Tail)
intexpo;
floatcoef;
fscanf(f/%f\&coeO;/*先看彳系數(shù)及乘幕,若未逵嗒尾,即*/
fscanf(f;,%d';&expo);/*都^入成功彳爰才建立此fS黑占,否即曾造刃
while(!feof(f))/*成最彼一肇資料曾建立雨次*/
{Tail=AddTail(Tail,coef,expo);
fscanf(f,H%f",&coef);
fscanf(f,n%d",&expo);
voidPrintPoly(Pnode*p)
{for(p=p->next;p->next!=NULL;p=p->next)
if(p->coef>0)
printf(u%2.1fxA%d+M,p->coef,p->expo);
elseif(p->coef<0)
printf(n%2.1fxA%d-n,-(p->coef),p->expo);
if(p->expo!=0)
printf(n%2.1fxA%dn,p->coef,p->expo);
else
printf(M%2.1fH,p->coef);
)
voidFreeAllNode(Pnode*head)
{Pnode*next_node;
while(head->next!=NULL)
{next_node=head->next;
free(head);
head=next_node;
)
free(head);
)
voidmain(void)
{Pnode*Pa,*Pb,*Pc;
if((finl=fopen('TolyAjn\Y,))===NULLII
(fin2=fopen(,,PolyB.in'V,rn))==NULL)
printf(嘲槽失fO吉束程式)
exit(l);
Pa=(Pnode*)malloc(sizeof(Pnode));
Pb=(Pnode*)malloc(sizeof(Pnode));
Read_data(finl,Pa);
Read_data(fin2,Pb);
Pc=PolyAdd(Pa,Pb);
printf(,f\nA(x)=n);
PrintPoly(Pa);
printf(H\nB(x)=n);
PrintPoly(Pb);
printf(n\nC(x)=A(x)+B(x)=n);
PrintPoly(Pc);
printf(n\n");
FreeAllNode(Pa);
FreeAllNode(Pb);
FreeAllNode(Pc);
)
PolyA.in槽案
54
6.12
2.91
60
PolyB.in槽案
95
3.22
41
50
7.稀疏矩睡的插入(insert)勤作,必須符新^黠插入其所在的位置。例如要符
H9加入圈3.24的M[l][2],需要改燮第1列的串列(rl)和第2行的串
列(c2)。
A.嘉一函式初^稀疏矩睡。(首黠均接地)。
B.嘉一函式,根摞輸入的列虢(r)、行虢(c)、及資料(x),裂造新^黠,加
招此新^黠加入逾富的位置。
答:
#include<stdio.h>
#include<stdlib.h>
#defineMAXROW5
#defineMAXCOL6
typedefstructMlistnode
{floatdata;/*元素彳直*/
introw,col;/*列虢及行虢*/
structMlistnode*right,*down;/*列指木票及行指牛票*/
}Mnode;
MnodeRowHead[MAXROW];
MnodeColHead[MAXCOL];
voidInsertRow(Mnode*p)
{Mnode*Follower=&RowHeadfp->row];
Mnode*Prior=RowHead[p->row].right;
intFlagExists;
FlagExists=O;
while(Prior!=&RowHead[p->row])
{if(Prior->col==p->col)//alreadyexists
{Prior->data=p->data;
FlagExists=l;
break;
}
elseif(Prior->col<p->col)
{Follower=Prior;
Prior=Prior->right;
}
else
break;
)
if(FlagExists==0)//Insert*pafter
{p->right=Follower->right;
Follower->right=p;
voidInsertCol(Mnode*p)
{Mnode*Follower=&ColHead[p->col];
Mnode*Prior=ColHeadfp->col].down;
intFlagExists;
FlagExists=O;
while(Prior!=&ColHead[p->col])
{if(Prior->row==p->row)//alreadyexists
{Prior->data=p->da
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成語故事-此地?zé)o銀三百兩-課件
- 相交弦定理課件
- 清兵衛(wèi)與葫蘆-課件2
- 《酸堿中和滴定》課件
- 單位人力資源管理制度品讀選集十篇
- 2024年市場推廣方案
- 【課件】配置遠(yuǎn)程訪問服務(wù)
- 單位管理制度展示合集員工管理
- 單位管理制度展示大全人事管理十篇
- 單位管理制度收錄大全人事管理篇十篇
- 部編版七年級下冊語文全冊表格教案樣本
- 燃燒仿真教程:湍流燃燒模型與化學(xué)反應(yīng)動力學(xué)
- 七年級上冊歷史小論文
- 2024至2030年中國工業(yè)地產(chǎn)市場全景調(diào)查及投資咨詢報(bào)告
- 上海大眾模具設(shè)計(jì)標(biāo)準(zhǔn)-結(jié)構(gòu)設(shè)計(jì)v1
- 分布式數(shù)據(jù)庫遷移風(fēng)險(xiǎn)評估與管理
- 2024屆高考英語作文復(fù)習(xí)專項(xiàng) 讀后續(xù)寫語料庫清單
- 新勞動合同法全文(2024版)
- 垃圾填埋場項(xiàng)目經(jīng)濟(jì)效益和社會效益分析
- 校園零星維修服務(wù) 投標(biāo)方案(技術(shù)方案)
- 報(bào)關(guān)企業(yè)申請預(yù)歸類資質(zhì)流程
評論
0/150
提交評論