2023年數(shù)據(jù)結(jié)構(gòu)課程單鏈表實驗報告_第1頁
2023年數(shù)據(jù)結(jié)構(gòu)課程單鏈表實驗報告_第2頁
2023年數(shù)據(jù)結(jié)構(gòu)課程單鏈表實驗報告_第3頁
2023年數(shù)據(jù)結(jié)構(gòu)課程單鏈表實驗報告_第4頁
2023年數(shù)據(jù)結(jié)構(gòu)課程單鏈表實驗報告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

鄭州輕工業(yè)學院

《數(shù)據(jù)結(jié)構(gòu)》課程實驗

實驗報告

題目:單鏈表表的基本操作及C語言實現(xiàn)

專業(yè):__________信息管理與信息系統(tǒng)

班級:_______________11-01________________________

姓名:________________高博文________________________

完畢日期:____________2023/5/23___________________

一、實驗內(nèi)容

用C語言實現(xiàn)單鏈表的建立插入刪除查找,合并等內(nèi)容

二、實驗?zāi)康?/p>

掌握鏈表的基本操作:插入、刪除、查找等運算,可以靈活應(yīng)用鏈表這種數(shù)據(jù)結(jié)構(gòu),進一步對

鏈表鏈式結(jié)構(gòu)的了解。

三.源程序代碼

#include<stdio.h>

#inc1ude<stdlib.h>

typedefintE1emtype:

typedefintStatus;

typedefstructnode〃定義存儲節(jié)點

(

intdata;//數(shù)據(jù)域

structnode*next;//結(jié)構(gòu)體指針

}*link1ist,node;//結(jié)構(gòu)體變量,結(jié)構(gòu)體名稱

linklistcreat(intn)//創(chuàng)建單鏈表

(

°linklisthead,r,p;〃定義頭指針r,p,指針

intx,i;

head=(node*)malloc(sizeof(node));〃生成頭結(jié)點

。r=head;//r指向頭結(jié)點

printf("輸入數(shù)字:\n");

°for(i=n;i>0;i--)//for循環(huán)用于生成第一個節(jié)點并讀入數(shù)據(jù)

°{

oscanf(n%dx);

。叩二(node*)malloc(sizeof(node));

p->data=x;〃讀入第一個節(jié)點的數(shù)據(jù)

阿->next=p;//把第一個節(jié)點連在頭結(jié)點的后面

。尸P;//循環(huán)以便于生成第二個節(jié)點

r->next=O;//生成鏈表后的斷開符

returnhead;//返回頭指針

)

voidoutput(linklisthead)//輸出鏈表

(

linklistp;

p=head->next;

o

(

printf(n%3dH,p->data);

ep=p—>next;

0)

while(p);

oprintf("\n");

)

Statusinsert(linklist&1,inti,Elemtypee)//插入操作

(

“ntj=0;

linklistp=l,s;

while(j<i-l&&p)

(

叩二p->next;

++j:

)

if(!p|Ij>i-1)

^return-1;

e1se

gs=(node*)ma11oc(sizeof(node));

s->data=e;

。s->next=p->next;

?p->next=s;

dreturn1;

°)

)

Statusde1ect(linklist&1,inti,Elemtype&e)〃刪除操作

(

Antj=0;

linklistp=1,q;

whi1e(j<i-1&&p->next)

(

叩二P->next;

++j;

)

if(!p->next|Ij>i-1)

^return-1;

else

(

oq=p->next;

叩->next=q->next;

e=q->data;

free(q);

?return1;

voidcombine(1ink1istla,link!istlb)//合并單鏈表

0node*pa,*pb,*pc;

olinklist1c;

。pa=la->next;

pb=lb—>next;

lc=pc=la;

while(pa&&pb){

oif(pa->data<=pb->data){

gpc—>next=pa;

gpc=pa;

^pa=pa->next;

)

e1se{pc->next=pb;pc=pb;pb=pb->next;}

)

叩c->next=pa?pa:pb;

free(lb);

)

StatusGetE1em(linklist1,inti,Elemtype&e)〃查找操作

(

。linklistp;

°intj;

p=l->next;

J=1;

。whi1e(p&&j<i)

p=p->next;

0++j;

)

。if(!PIIj>i)

oreturn-2;

e=p->data;

oreturne;

)

voidmain()

(

o1inklist1a,lb;

Antn;

inti,j;

E1emtypee;

printf("請輸入第一個鏈表:\nH);

printf("輸入鏈表元素的個數(shù):\n");

seanf(n%dn,&n);

01a=creat(n);

叩rintf("輸出鏈表:\n)

output(la);

叩rintf(”請輸入要查找元素的位置:\n");

scanf(u%dM,&i);

j=GetE1em(la,i,e);

中rintf("所要查找的元素是%d\n",j);

Printf("請輸入插入位置和元素:'n");

scanf("%d%d”,&i,&e);

insert(la,i,e);

Printf("插入后的鏈表:\n");

output(1a);

Printf("請輸入要刪除的位置:\n");

scanf("%d",&i);

delect(1a,i,e);

Printf("刪除的那個元素是:%d\n",e);

printf("輸出刪除后的順序表:\n");

outpul(la);

oprintf("請輸入第一個非遞減鏈表:\n");

。printf("輸入鏈表元素的個數(shù):\n");

seanf("%d",&n);

la=creat(n);

printf("輸出鏈表:\n");

?output(1a);

printf("請輸入第二個非遞減鏈表:\n");

?printf("輸入鏈表元素的個數(shù):\n");

scanf("%d",&n):

1b=creat(n);

oprintf("輸出鏈表:\n");

oulput(lb);

combine(1a,lb);

printf("輸出合并后的鏈表:\n");

°output(la);

)

運營結(jié)果如下:

,*C:\Users\moyuxuan\Desktop\Debug\thl.exe"

輸入鏈袤元去的個數(shù):

谿入數(shù)字:

1

3

5

輸出鏈表:

1357

請輸入要查找元素的位置:

2

2

立人后的鏈表:

1535?

請輸入要刪除的位置:

#犒翻嘉譚塞

卻整需臂表:

■入數(shù)字:

1

2

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論