




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
...wd......wd......wd...實驗目的:1〕掌握雙向線性鏈表的邏輯特征2〕熟練掌握帶頭結點的雙向鏈表的指針操作,能完成雙向鏈表的構建,插入,刪除與顯示等復雜應用。二.實驗原理雙向鏈表的結點中有兩個指針域,其一指向直接后繼,另一指向直接前驅,在C語言中可描述如下:typedefstructDuLNode{ElemTypedata;structDuLNode*prior;structDuLNode*next;}DuLNode,*DuLinkList;雙向鏈表的操作和單鏈表類似。本實驗利用函數以及指針處理雙向鏈表的知識,首先建設四個函數,creat,print,ListInsert_DuL,ListDelete_DuL分別實現對雙向鏈表的建設,輸出,插入,刪除功能。還需建設GetElemP_DuL函數來輔助。然后將五個函數組織在一個C程序中,用main函數作主調函數。三.實驗內容1.首先建設一個帶頭結點的非空的雙向鏈表。建設函數creat,操作與建設線性鏈表類似,但需要修改兩個方向的指針。本實驗以輸入6個學生的數據為例。2.建設函數GetElemP_DuL,得到第i個元素的位置指針。3.對鏈表進展插入操作。建設函數ListInsert_DuL,輸入要插入的學生數據以及位置,調用函數GetElemP_DuL,插入成功返回1,否則返回0。4.對鏈表進展刪除操作。建設函數ListDelete_DuL,輸入要刪除的學生位置,調用函數GetElemP_DuL,刪除成功返回1,否則返回0。5.對鏈表的結果進展輸出與顯示。建設函數print,對鏈表進展正向和反向的輸出。6.建設main函數,把以上五個函數整合到一個程序之中,當輸入的數據不為0時可進展屢次刪除,插入操作,并對每一次的結果進展顯示。四.實驗方法運行環境:VisualC++6.0把所有程序思想寫成代碼,通過VisualC++編譯,得到結果,即運行成功。本實驗程序代碼:#include"stdio.h"#include"malloc.h"#defineNULL0#defineLENsizeof(structstudent)#defineOK1#defineERROR0structstudent{ intdata; structstudent*prior; structstudent*next;};intn;structstudent*creat(void){ structstudent*L; structstudent*p1,*p2; L=(structstudent*)malloc(LEN); L->next=NULL; L->prior=NULL; n=0; p1=p2=(structstudent*)malloc(LEN); scanf("%d",&p1->data); while(p1->data!=0) { n=n+1; if(n==1) {L->next=p1;p1->prior=L;} else { p2->next=p1; p2->next->prior=p2; } p2=p1; p1=(structstudent*)malloc(LEN); scanf("%d",&p1->data); } p2->next=L; L->prior=p2; return(L->next);}voidprint(structstudent*head){ structstudent*p; p=head; printf("正向輸出:\n"); if(head!=NULL) do{ printf("%d\n",p->data); p=p->next; }while(p!=head->prior); printf("反向輸出:\n"); if(p==head->prior) { p=p->prior; do{ printf("%d\n",p->data); p=p->prior; }while(p!=head->prior); }}structstudent*GetElemP_DuL(structstudent*L,inti){ structstudent*p; intj=1; p=L; while(j!=i) { p=p->next; j++; } returnp;}intListInsert_DuL(structstudent*L,inti,inte){ structstudent*p,*s; if(!(p=GetElemP_DuL(L,i))) returnERROR; if(!(s=(structstudent*)malloc(LEN)))returnERROR; s->data=e; s->prior=p->prior;p->prior->next=s; s->next=p; p->prior=s; n=n+1; returnOK;}intListDelete_DuL(structstudent*L,inti){ structstudent*p; inte; if(!(p=GetElemP_DuL(L,i))) returnERROR; e=p->data; p->prior->next=p->next; p->next->prior=p->prior; free(p); n=n-1; returnOK;}voidmain(){ structstudent*head; inti,e; printf("請輸入學生的數據:\n"); head=creat(); print(head); printf("請輸入要插入的位置以及數據:\n"); scanf("%d%d",&i,&e); while(e!=0) { if(ListInsert_DuL(head,i,e)==1) print(head); printf("請輸入要插入的位置以及數據:\n"); scanf("%d%d",&i,&e); } printf("請輸入要刪除的位置:\n"); scanf("%d",&i); while(i!=0) { if(L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醬香酒釀造技能培訓課件
- 酒店品牌介紹培訓課件
- 年產3000萬平方米紙面石膏板項目節能評估報告(節能專)
- 配電自動化技術課件
- 2020-2025年中國八角種植行業發展趨勢預測及投資戰略咨詢報告
- 焊嘴保護套項目投資可行性研究分析報告(2024-2030版)
- 中國羊乳制品行業發展全景監測及投資前景展望報告
- 2020-2025年中國狐貍養殖行業發展趨勢預測及投資戰略咨詢報告
- 2025年中國指紋考勤機行業發展監測及投資戰略規劃報告
- 2025年中國高端水產養殖市場供需現狀及投資戰略研究報告
- 無人機裝調檢修工理論知識考試題庫及答案
- XX區“五好兩宜”和美鄉村建設試點實施方案(參考模板)
- 2021年中級注冊安全工程師《安全生產專業實務道路運輸安全》真題及解析
- 血透患者敘事護理故事
- 電力建設工程施工安全管理導則
- 醫院消防安全培訓課件(完美版)
- 雅馬哈RX-V365使用說明書
- 照相館管理制度
- IECQ QC 080000:2017 第四版標準(中文版)
- 國外激勵研究現狀分析報告
- GB/T 4074.4-2024繞組線試驗方法第4部分:化學性能
評論
0/150
提交評論