基本練習(xí)題基本練習(xí)題基本練習(xí)題分?jǐn)?shù)乘法練習(xí)題小數(shù)除法練習(xí)題_第1頁
基本練習(xí)題基本練習(xí)題基本練習(xí)題分?jǐn)?shù)乘法練習(xí)題小數(shù)除法練習(xí)題_第2頁
基本練習(xí)題基本練習(xí)題基本練習(xí)題分?jǐn)?shù)乘法練習(xí)題小數(shù)除法練習(xí)題_第3頁
基本練習(xí)題基本練習(xí)題基本練習(xí)題分?jǐn)?shù)乘法練習(xí)題小數(shù)除法練習(xí)題_第4頁
基本練習(xí)題基本練習(xí)題基本練習(xí)題分?jǐn)?shù)乘法練習(xí)題小數(shù)除法練習(xí)題_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論