資源描述:
《線性表地鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告材料》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、實(shí)用標(biāo)準(zhǔn)文案實(shí)驗(yàn)報(bào)告課程名稱(chēng):數(shù)據(jù)結(jié)構(gòu)與算法分析實(shí)驗(yàn)名稱(chēng):鏈表的實(shí)現(xiàn)與應(yīng)用實(shí)驗(yàn)日期:2015.01.30班級(jí):數(shù)媒1401姓名:范業(yè)嘉學(xué)號(hào)1030514108一、實(shí)驗(yàn)?zāi)康恼莆站€性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)設(shè)計(jì)與基本操作的實(shí)現(xiàn)。二、實(shí)驗(yàn)內(nèi)容與要求⑴定義線性表的鏈?zhǔn)酱鎯?chǔ)表示;⑵基于所設(shè)計(jì)的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)線性表的基本操作;⑶編寫(xiě)一個(gè)主程序?qū)λ鶎?shí)現(xiàn)的線性表進(jìn)行測(cè)試;⑷線性表的應(yīng)用:①設(shè)線性表L1和L2分別代表集合A和B,試設(shè)計(jì)算法求A和B的并集C,并用線性表L3代表集合C;②(選做)設(shè)線性表L1和L2中的數(shù)據(jù)元素為整數(shù),且均已按值非遞減有序排列,試
2、設(shè)計(jì)算法對(duì)L1和L2進(jìn)行合并,用線性表L3保存合并結(jié)果,要求L3中的數(shù)據(jù)元素也按值非遞減有序排列。⑸設(shè)計(jì)一個(gè)一元多項(xiàng)式計(jì)算器,要求能夠:①輸入并建立多項(xiàng)式;②輸出多項(xiàng)式;③執(zhí)行兩個(gè)多項(xiàng)式相加;④執(zhí)行兩個(gè)多項(xiàng)式相減;⑤(選做)執(zhí)行兩個(gè)多項(xiàng)式相乘。三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)1.按所用指針的類(lèi)型、個(gè)數(shù)、方法等的不同,又可分為:線性鏈表(單鏈表)靜態(tài)鏈表循環(huán)鏈表雙向鏈表雙向循環(huán)鏈表2.用一組任意的存儲(chǔ)單元存儲(chǔ)線性表中數(shù)據(jù)元素,用指針來(lái)表示數(shù)據(jù)元素間的邏輯關(guān)系。四、算法設(shè)計(jì)1.定義一個(gè)鏈表voidcreatlist(Linklist&L,intn)
3、{inti;Linklistp,s;L=(Linklist)malloc(sizeof(Lnode));p=L;L->next=NULL;for(i=0;idata);s->next=NULL;p->next=s;p=s;}文檔大全實(shí)用標(biāo)準(zhǔn)文案}2.(1)兩個(gè)鏈表的合并voidMergelist(Linklist&La,Linklist&Lb,Linklist&Lc){Linklistpa,pb,pc;pa=La->
4、next;pb=Lb->next;Lc=pc=La;while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;free(Lb);}(2)兩個(gè)鏈表的并集Linklistunionlist(Linklist&La,Linklist&Lb){Linklistp1,p2,head,q,s;intflag;head=q=(Linklist)malloc(
5、sizeof(Lnode));p1=La->next;while(p1){flag=0;p2=Lb->next;while(p2){if(p1->data==p2->data){flag=1;break;}p2=p2->next;}if(flag==0){s=(Linklist)malloc(sizeof(Lnode));s->data=p1->data;q->next=s;q=s;}p1=p1->next;}q->next=Lb->next;文檔大全實(shí)用標(biāo)準(zhǔn)文案returnhead;}3.(1)一元多項(xiàng)式的加法Listaddp
6、oly(Listpa,Listpb)//一元多項(xiàng)式的加法{intn;Listpc,s,p;pa=pa->next;pb=pb->next;pc=(List)malloc(sizeof(structLinklist));pc->next=NULL;p=pc;while(pa!=NULL&&pb!=NULL){if(pa->expn>pb->expn){s=(List)malloc(sizeof(structLinklist));s->expn=pa->expn;s->coef=pa->coef;s->next=NULL;p->ne
7、xt=s;p=s;pa=pa->next;}elseif(pa->expnexpn){s=(List)malloc(sizeof(structLinklist));s->expn=pb->expn;s->coef=pb->coef;s->next=NULL;p->next=s;p=s;pb=pb->next;}else{n=pa->coef+pb->coef;if(n!=0){s=(List)malloc(sizeof(structLinklist));s->expn=pa->expn;s->coef=n;s->nex
8、t=NULL;p->next=s;文檔大全實(shí)用標(biāo)準(zhǔn)文案p=s;}pb=pb->next;pa=pa->next;}}while(pa!=NULL){s=(List)malloc(sizeof(structLinklist));s->expn=pa->expn;s