版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
洛陽理工學(xué)院實驗報告
系別計算機系班級學(xué)號姓名
課程名稱數(shù)據(jù)結(jié)構(gòu)實驗日期11.7
實驗名稱鏈表的基本操作成績
實驗?zāi)康模?/p>
熟悉掌握線性表鏈?zhǔn)酱鎯Y(jié)構(gòu),掌握與應(yīng)用查找、插入、刪除等基本操作
算法,訓(xùn)練和提高結(jié)構(gòu)化程序設(shè)計能力及程序調(diào)試能力。
實驗條件:
計算機一臺,VisualC++6.0
實驗內(nèi)容:
1.問題描述
以單鏈表為存儲結(jié)構(gòu)實現(xiàn)以下基本操作:
(1)在第i個元素前插入一個新元素。
(2)查找值為x的某個元素。若成功,給出x在表中的位置;不成功給出
提醒信息。
(3)刪除第i個元素,若成功,給出提醒信息并顯示被刪元素的值;不成功
給出失敗的提醒信息。
2.數(shù)據(jù)結(jié)構(gòu)類型定義
typedefstructLinkNode
(
ointValue;
ostructLinkNode*Next;
}Node,*LinkList;
3.模塊劃分
(1)初始化鏈表:voidInitList(LinkList*L);
(2)創(chuàng)建鏈表:尾插法:intCreateFromTail(LinkListL);
(3)在指定位置插入元素:intInsList(LinkListL,inti,inte);
(4)在指定位置刪除元素:intDelList(LinkListL,inti,int*e);
返回值說明:返回ERROR插入失敗,返回OK插入成功;
(5)按位置查找鏈表元素:intGetList(LinkListL,inti,int*e);
4.具體設(shè)計
voidinit_1ink1ist(LinkList*1)/*對單鏈表進行初始化*/{
3*1=(LinkList)ma1loc(sizeof(Node));/*申請結(jié)點空間*/
式*1)->next=NULL;/*置為空表*/
)
voidCreateFromHead(LinkListL)
(
Node*s;
?charc;
intf1ag=1;
while(flag)/*flag初值為1,當(dāng)輸入〃$〃時,置flag為0,建表結(jié)束
c=getchar();
。if(c!=,$,)
。s=(Node)maHoc(sizeof(Node));/*建立新結(jié)點s*/
8S-〉data=c;
bgs—>next=L->next;/*將s結(jié)點插入表頭*/
。此一>next=s;
。)
?else
。flag=0;
)
)
voidCreateFromTai1(LinkListL)
(
Node*r,*s;
ocharc;
intflag=1;/*設(shè)立一個標(biāo)志,初值為1,當(dāng)輸入"$"時,flag為
0,建表結(jié)束*/
°r=L;/*i'指針動態(tài)指向鏈表的當(dāng)前表尾,以便于做尾插
入,其初值指向頭結(jié)點*/
while(flag)/*循環(huán)輸入表中元素值,將建立新結(jié)點s插入
表尾*/
。{
?c=getchar();
。if(c!=,$')
00{
。s=(Node*)maHoc(sizeof(Node));
s->data=c;
ar->next=s;
gr=s;
。}
e1se
00{
flag=0;
。r—>next=NULL;/*將最后一個結(jié)點的next鏈域置為空,表達
鏈表的結(jié)束*/
)
Node*Get(LinkListL,inti)
/*在帶頭結(jié)點的單鏈表L中查找第i個結(jié)點,若找到(1WiWn),則返回該結(jié)
點的存儲位置;否則返回NULL*/
(
intj;
Node*p;
6P=L;
d=0;/*從頭結(jié)點開始掃描*/
while((p->next!=NULL)&&(j<i))
(
?p=p->next;/*掃描下一結(jié)點*/
。4++;/*已掃描結(jié)點計數(shù)器*/
)
if(i==j)
“returnp;/*找到了第i個結(jié)點*/
?else
returnNULL;/*找不到,iWO或i>n*/
Node*Locate(LinkListL,ElemTypekey)
/*在帶頭結(jié)點的單鏈表L中查找其結(jié)點值等于key的結(jié)點,若找到則返回該結(jié)
點的位置P,否則返回NULL*/
(
Node*p;
p=L->next;/*從表中第一個結(jié)點開始*/
。while(p!=NULL)
if(p->data!=key)
叩=p—>next;
ooe1se
。obreak;/*找到結(jié)點值=key時退出循環(huán)*/
e}
returnp;
y
intInsList(LinkListL,inti,ElemTypee)
/*在帶頭結(jié)點的單鏈表L中第i個位置插入值為e的新結(jié)點s*/
(
Node*pre,*s;
intk;
pre=L;
k=0;/*從〃頭〃開始,查找第i—1個結(jié)點*/
while(pre!=NULL&&k<iT)/*表未查完且未查到第i-1個時反
復(fù),找到pre指向第iT個*/
opre=pre->next;
ok=k+l;
}。。,/*查找第iT結(jié)點*/
f(!pre)/*如當(dāng)前位置Pre為空表已找完尚未數(shù)到第i個,說明插
入位置不合理*/
?(
。printf(“插入位置不合理!”);
oreturnERROR;
)
3s二(Node*)malloc(sizeof(Node));/*申請一個新的結(jié)點S*/
?s->data=e;/*值e置入s的數(shù)據(jù)域*/
??s—>next=pre->next/*修改指針,完畢插入操作*/
pre—>next=s;
oreturn0K;
)
intDe1List(LinkListL,inti,ElemType*e)
/*在帶頭結(jié)點的單鏈表L中刪除第i個元素,并將刪除的元素保存到變量*e中
*/
(
Node*pre,*r;
ointk;
opre=L;
k=0;
while(pre->next!=NULL&&k<i-1)/*尋找被刪除結(jié)點i的前驅(qū)結(jié)
點i—l使P指向它*/
(
pre=pre—>next;
業(yè)=k+1;
“gg川/*查找第i-1個結(jié)點*/
。if(!(pre->next))/*即while循環(huán)是由于p->next=NULL或i<
1而跳出的,而是由于沒有找到合法的前驅(qū)位置,說明刪除位置i不合法。*/
“printf(〃刪除結(jié)點的位置i不合理!〃);
turnERR0R;
r=pre->next;
叩re->next=pre->next->next;/*修改指針,刪除結(jié)點r*/
*e=r->data;
^free(r);/*釋放被刪除的結(jié)點所占的內(nèi)存空間*/
中rintf(〃成功刪除結(jié)點!”);
returnOK;
)
intListLength(LinkListL)
/*求帶頭結(jié)點的單鏈表L的長度*/
(
Node*p;
°intj;
op=L
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年違約借款合同違約責(zé)任追究辦法3篇
- 2025年度個人房屋買賣價格調(diào)整及支付合同4篇
- 2025年度企業(yè)應(yīng)收賬款債權(quán)轉(zhuǎn)讓與風(fēng)險控制協(xié)議書3篇
- 2025年度房地產(chǎn)樣板間設(shè)計與施工合同范本4篇
- 2025年度電子商務(wù)個人勞務(wù)派遣合作協(xié)議書4篇
- 工廠租地合同(2篇)
- 二零二五年度民政局離婚協(xié)議書模板法律咨詢附加服務(wù)合同4篇
- 2025年度銷售顧問市場調(diào)研聘用合同2篇
- 2024西部縣域經(jīng)濟百強研究
- STEM教育實踐講解模板
- 連續(xù)梁施工安全培訓(xùn):掛籃施工及安全控制
- 土壤與肥料學(xué)課件
- 供應(yīng)商物料質(zhì)量問題賠償協(xié)議(中文)
- 變頻電機使用說明書(完整版)
- 第七章_材料顯微斷口分析
- 口語交際教學(xué)設(shè)計的思路及策略-教育文檔
- 公共廁所(預(yù)算書)
- JSA作業(yè)安全分析表格
- 《豬肉分割及介紹》PPT課件.ppt
- 工程款欠條(模板)
- 幕墻工程施工重點、難點分析及應(yīng)對措施
評論
0/150
提交評論