


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、上機實驗題1. 創(chuàng)建一個單鏈表 L(包含頭結(jié)點),寫一算法將其倒置,并將對應(yīng)的程序調(diào)試運行通過。要求:鏈表的長度可以由用戶自行確定,不要倒置頭結(jié)點。#include <stdio.h>#include <stdlib.h>#define OVERFLOW-2#define OK1typedef int ElemType;typedef int Status;typedef struct LNodeElemType data;struct LNode *next;LNode, *LinkList;Status ReverseLinklist(LinkList &L
2、)/倒置單鏈表時不倒置頭結(jié)點LNode *p, *q;p=L->next->next;/*p 指向鏈表的開始結(jié)點之后的結(jié)點*/L->next->next=NULL;/將原鏈表一分為二,一個是用頭結(jié)點和/鏈表的開始結(jié)點組成新鏈表,另外一個是原鏈表的剩余部分while (p)q=p; /每次從第二個鏈表中取出開始結(jié)點,其地址用 q紀(jì)錄 p=p->next;q->next=L->next; /將 q指向結(jié)點插入到新鏈表的頭結(jié)點之后L->next=q;return OK;Status InitLinklist(LinkList &L)/初始化單鏈
3、表LNode *p=(LinkList)malloc(sizeof(LNode);if (!p) exit(OVERFLOW);L=p;p->next = NULL;/生成一個帶頭結(jié)點的空鏈表return OK;Status CreateLinklist(LinkList &L)/根據(jù)用戶輸入來創(chuàng)建單鏈表int n;LNode *p, *q;q=L;while (1)printf( "Please enter the next data element of the list: "); scanf("%d" , &n);if (n!
4、= -1)/當(dāng)用戶輸入 -1時,停止輸入數(shù)據(jù)元素p=(LinkList)malloc( sizeof(LNode);if (!p) exit(OVERFLOW);p->data = n;p->next=NULL;q->next=p;q=p;elsebreak;return OK;Status PrintLinklist(LinkList L) LNode *p;p=L->next;if (p=NULL)printf( "This list is empty." );elsewhile (p!=NULL)/此句和下句僅為檢驗結(jié)果輸出而加/打印逆置后的單
5、鏈表printf( "%dp=p->next;", p->data);return OK;Status main()LinkList L;InitLinklist(L);/初始化單鏈表CreateLinklist(L);/創(chuàng)建單鏈表printf( "Before link reversing.n" );PrintLinklist(L);/打印單鏈表ReverseLinklist(L);/對單鏈表進行逆置printf( "nAfter link reversing.n" );PrintLinklist(L);getchar(
6、);getchar();return OK;2. 已知線性表 C= a 1, b1, a2, b2, ,an,bn ,采用單鏈表 L (包含頭結(jié)點)存放,寫一算法將其拆分成兩個線性表(分別用帶頭結(jié)點的單鏈表存放),使得:A=a 1, a2,an,B=b 1,b2,bn并將對應(yīng)的程序調(diào)試運行通過。#include <stdio.h>#include <stdlib.h>#define OVERFLOW-2#define OK1typedef int ElemType;typedef int Status;typedef struct LNodeElemType data;
7、struct LNode *next;LNode, *LinkList;Status InitLinklist(LinkList &L)/初始化單鏈表LNode *p=(LinkList)malloc(sizeof(LNode);if (!p) exit(OVERFLOW);L=p;p->next = NULL;/生成一個帶頭結(jié)點的空鏈表return OK;Status CreateLinklist(LinkList &L)/根據(jù)用戶輸入來創(chuàng)建單鏈表int n;LNode *p, *q;q=L;while (1)printf( "Please enter the
8、 next data element of the list: "); scanf("%d" , &n);if (n!= -1)/當(dāng)用戶輸入 -1時,停止輸入數(shù)據(jù)元素p=(LinkList)malloc( sizeof(LNode);if (!p) exit(OVERFLOW);p->data = n;p->next=NULL;q->next=p;q=p;elsebreak;return OK;Status PrintLinklist(LinkList L) LNode *p;p=L->next;if (p=NULL)printf(
9、 "This list is empty." );elsewhile (p!=NULL)printf( "%d", p->data);p=p->next;return OK;Status SplitLinklist(LinkList &L, LinkList &La, LinkList &Lb) LinkList pa = La, pb = Lb, p = L->next;/pa指向 La中的最后一個結(jié)點,p/指向 L 中的第一個結(jié)點int counter = 1;/計數(shù)器 ,奇數(shù)位上結(jié)點加入La,偶數(shù)位上結(jié)點加
10、/入 Lbwhile (p)/線性表非空L->next = p->next;/將當(dāng)前結(jié)點從L 中摘下來p->next = NULL;/此結(jié)點將成為La或 Lb中的最后一個結(jié)點if (counter % 2) = 1)/ 將此結(jié)點加入Lapa->next=p;pa=pa->next;else / counter%2 = 0,將此結(jié)點加入Lbpb->next=p;pb=pb->next;p=L->next;counter+;return OK;Status main()LinkList L, La, Lb;InitLinklist(L);InitLinklist(La);InitLinklist(Lb);CreateLinklist(L);printf( "The original linklist :");PrintLinklist(L);printf( "is to be split into two.n" );SplitLinklist(L, La,
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度法律服務(wù)團隊聘用合同范本下載
- 2025年度音樂噴泉與音響系統(tǒng)集成項目合同
- 知識產(chǎn)權(quán)教育實踐活動計劃
- 科技創(chuàng)新應(yīng)用推廣工作方案計劃
- 學(xué)期后勤保障與支持計劃
- 2025年物位儀合作協(xié)議書
- 培養(yǎng)小學(xué)生的公民道德責(zé)任計劃
- 制定年度客戶滿意度提升計劃
- 如何構(gòu)建長效的職業(yè)發(fā)展體系計劃
- 校園美術(shù)文化建設(shè)方案計劃
- 市政工程旁站監(jiān)理方案
- 員工離職登記表(范本模板)
- YY/T 1566.1-2017一次性使用自體血處理器械第1部分:離心杯式血細(xì)胞回收器
- 馬工程-公共財政概論-課程教案
- 2023人教版(PEP)小學(xué)英語(三、四、五、六年級)詞匯及常用表達法(課本同步)
- 非常規(guī)天然氣課件
- 2023年頒布-英語課程標(biāo)準(zhǔn)
- 人員招收、招聘來源及人員穩(wěn)定性保障措施
- 滲透檢測報告
- DB4401-T 1-2018老年人照顧需求等級評定規(guī)范-(高清現(xiàn)行)
- 值班、交接班制度課件
評論
0/150
提交評論