資源描述:
《2019創(chuàng)建鏈表和鏈表操作實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、創(chuàng)建鏈表和鏈表操作實(shí)驗(yàn)報(bào)告 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告 報(bào)告名稱 創(chuàng)建鏈表和鏈表操作 ?! I(yè) 網(wǎng)絡(luò)工程 班 級(jí) 1001 學(xué) 號(hào) 20XX03120XX9 姓 名 張劍 指導(dǎo)教師 陳淑紅李珍輝黃哲 20XX年5月4日 一、實(shí)驗(yàn)?zāi)康模骸 ≌莆站€性表的基本操作:插入、刪除、查找以及線性表合并等運(yùn)算在順序存儲(chǔ)結(jié)構(gòu)和鏈接存儲(chǔ)結(jié)構(gòu)上的運(yùn)算?! 《?、實(shí)驗(yàn)內(nèi)容與基本要求: 實(shí)驗(yàn)內(nèi)容: 1.創(chuàng)建單鏈表 2.在鏈表上進(jìn)行插入、刪除操作; 3.設(shè)計(jì)一個(gè)程序,用兩個(gè)單鏈表分別表示兩個(gè)集合,并求出這兩個(gè)集合的并集?! ?shí)驗(yàn)要
2、求: 1.在上機(jī)前寫出全部源程序;2.能在機(jī)器上正確運(yùn)行程序;3.用戶界面友好; 三、概要設(shè)計(jì): 1.單鏈表的存儲(chǔ)結(jié)構(gòu):teypedefstructLNode{ElemTypedate; structLNond*next;}LNode*LinkList; 2.單鏈表的插入操作: StatusListTnsert-L(LinkLIst&L,inti,ElemTypee){ //再帶頭結(jié)點(diǎn)的單鏈線性表L中的第i個(gè)位置之前插入元素eP=l;j=0; While(p&&jnext;++j; }//尋找第i-1個(gè)結(jié)點(diǎn) if(!p
3、
4、
5、j>i-1)returnERROR; //i小小于1或者大于表長(zhǎng)+1s=(LinkList)malloc(sizeof(LNode)); //生成新結(jié)點(diǎn)s->date=e;s->next=p->next; //插入L中p->next=s;returnok; }//ListTnsertL 3.單鏈表的刪除操作: StatusListDelete-L(LinkLIst&L,inti,ElemType&e){ //在帶頭結(jié)點(diǎn)單鏈線性表L中,刪除低i個(gè)元素,并e返回其值p=l;j=0; while(p->next&&jnext;+
6、+j;} if(!(p->next)
7、
8、j>i-1) returnERROR;//刪除位置不合理 q=p->next;p->next=q->next;//刪除并釋放結(jié)點(diǎn)e=q->date free(q);returnOK; }//ListDelete-L 4.鏈表的合并操作: voidMergeList-L(LinkList&La,LinkList&Lb,LinkList&Lc){//已知單鏈表La和Lb的元素值 //合并單鏈表La和Lb,得到新的單鏈表Lcpa=La->next;pb=Lb->next; lc=pc=La
9、;//用La的頭結(jié)點(diǎn)作為L(zhǎng)c的頭結(jié)點(diǎn) while(pa&&pb){if(pa->datedate){ pc->next=pa;pc=pa;pa=pa->next;} else{pc->next=pb;pc=pb;pb=pb->next;}} Pc->next=papa:pb;//插入剩余段free(Lb);//釋放Lb頭結(jié)點(diǎn) }//MergeList-L四、詳細(xì)設(shè)計(jì): #include#include#include#includetypedefintstatus; typedefcharElemType;typedefstr
10、uctLnode {ElemTypedata; //定義鏈表結(jié)點(diǎn)類型 structLnode*next; }Lnode,*Linklist; statusinitlist(Linklist*L) { //單鏈表的初始化 *L=(Lnode*)malloc(sizeof(Lnode));//創(chuàng)建頭結(jié)點(diǎn) (*L)->next=NULL; return1; } statusCreatelist(LinklistL){ Lnode*p,*q;inti,j=1,n; ElemTypem,M;q=L; printf
11、(請(qǐng)輸入你要輸入單鏈中元素的個(gè)數(shù)\scanf(scanf( for(i=n;i>0;i--) {p=(Lnode*)malloc(sizeof(Lnode)); printf(請(qǐng)輸入%個(gè)元素: scanf( scanf( p->data=M; p->next=q->next; q->next=p; q=p; j++; } return1; } statusListinsert(LinklistL,inti,ElemTypee){ intj=0; Lnode*p=L,*s;while(p&&
12、jnext; ++j; } if(!p
13、
14、j>i-1){printf(輸入錯(cuò)誤!\return0; } s=(Lnode*)malloc(sizeof(Lnod