版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、在鏈表中刪除相同節(jié)點(diǎn)1需求分析: 依次比較兩個(gè)鏈表元素,取出兩個(gè)鏈表相同元素,組成一個(gè)新的鏈表并賦順序指針struct Node int number; Node *next; Node *p,*q; ;2源代碼#include "stdafx.h" #include <iostream> /雙向循環(huán)鏈表的操作 using namespace std; typedef struct
2、160;Dbnode int data; /節(jié)點(diǎn)數(shù)據(jù) Dbnode *left; /前驅(qū)結(jié)點(diǎn)指針 Dbnode *right; /后繼節(jié)點(diǎn)指針 Dbnode; void Print(Dbnode *head); /根據(jù)
3、數(shù)據(jù)創(chuàng)建節(jié)點(diǎn) Dbnode *CreateNode(int data) Dbnode *pnode=new Dbnode;/ if (pnode=NULL) /如果內(nèi)存申請(qǐng)失敗,返回NULL return NULL;
4、 pnode->data=data; pnode->left=pnode;/新節(jié)點(diǎn)的前驅(qū)和后繼指針都指向自身 pnode->right=pnode; return pnode; /在表尾插入新節(jié)點(diǎn),返回表頭節(jié)
5、點(diǎn) Dbnode *AppendNode(Dbnode *head,int data) if (head=NULL) return NULL; Dbnode *phead=hea
6、d; Dbnode *pnode=CreateNode(data);/創(chuàng)建一個(gè)新節(jié)點(diǎn) while (head!=phead->right) /找到表尾 phead=phead->right;
7、60; pnode->right=phead->right;/右連接 head->left=pnode; phead->right=pnode;/左連接 pnode->left=phead; return
8、60;head; /雙向循環(huán)鏈表測(cè)長(zhǎng) int GetLength(Dbnode *head) if (head=NULL)/如果指針為空則返回0 return 0;
9、160; Dbnode *phead=head->right; int i=1; while (head!=phead) phead=phead->right;&
10、#160; i+; return i; /雙向循環(huán)鏈表的節(jié)點(diǎn)查找 Dbnode *FindNode(Dbnode *head,int data)&
11、#160; if (head=NULL) return NULL; if (head->data=data) /如果表頭節(jié)點(diǎn)和值相等
12、; return head; Dbnode *phead=head->right; while (head != phead && phead->data != data)
13、0; phead=phead->right; if (phead->data=data)/如果是值相等退出,則返回節(jié)點(diǎn) return phead;
14、 else /如果沒(méi)有找到,則返回NULL return NULL; /獲得pA鏈表和pB鏈的交集,返回一個(gè)新鏈表 Dbnode *GetLink(Dbnode *pA,Dbnod
15、e *pB) if (pA=NULL | pB=NULL)/如果為空,則返回NULL return NULL; Dbnode *pC=NULL;
16、0; Dbnode *node=NULL; Dbnode *phead=NULL; /Dbnode *pheadA=pA; int len_a=GetLength(pA); int len_b=GetLength(pB);
17、160; int data; for (int i=0;i<len_a;i+) phead=pB;
18、; data=pA->data; if (FindNode(pC,data)!=NULL)/如果data已在pC中,則進(jìn)行下次循環(huán)
19、; pA=pA->right; continue; &
20、#160; if (data=pB->data)/如果pB的頭節(jié)點(diǎn)和data相等 node=new Dbnode;
21、160; node->data=data; node->left=node->right=node; &
22、#160; if (pC=NULL)/如果pC為空,則作為頭節(jié)點(diǎn) pC=node;
23、60; pC->left=pC;
24、0; pC->right=pC; else
25、 pC->right->left=node; node->right=pC->right;
26、0; pC->right=node;
27、160; node->left=pC; else/如果pB的頭節(jié)點(diǎn)
28、和data不相等 phead=pB->right; while (pB!=phead && phead->data != data)
29、60; phead=phead->right; if
30、(phead->data = data) node=new Dbnode; node->data=data;
31、60; node->right=node; node->left=node;
32、60; if (pC=NULL) /如果pC為NULL pC=node;
33、160; pC->left=pC; pC->right=pC;
34、; else pC->right->left=node;
35、160; node->right=pC->right; pC->right=node;
36、160; node->left=pC;
37、 pA=pA->right; return pC; /刪除節(jié)點(diǎn)中所有數(shù)值等于data的節(jié)點(diǎn) Dbnode *DeleteNode(Dbn
38、ode *head,int data) if (head=NULL)/鏈表不存在返回NULL return NULL; Dbnode *node=NULL;
39、60; Dbnode *pdelnode=NULL; while(head->data=data) /如果頭節(jié)點(diǎn)相等,則刪除 if (head->right=head) /如果只有一個(gè)頭節(jié)點(diǎn),則返回NULL
40、60; delete head; return NULL; pdelnode=head; /保存即將刪除的節(jié)點(diǎn)
41、160; node=head->right;/保存head的下一個(gè)節(jié)點(diǎn) head->right->left=head->left; head->left->right=head->right;
42、60; head=node;/head的下一個(gè)節(jié)點(diǎn)作為頭節(jié)點(diǎn) delete pdelnode;/釋放刪除的節(jié)點(diǎn) pdelnode =NULL; &
43、#160; Dbnode *phead=head->right; while (head!=phead) if (phead->data=data) while(p
44、head->data=data) pdelnode=phead; node=phead->right; /保存phead的下一個(gè)節(jié)點(diǎn) &
45、#160; phead->right->left=phead->left; phead->left->right=phead->right;
46、160; phead=node; delete pdelnode;
47、60; pdelnode=NULL; else phead=phead->right;
48、160; return head; /刪除鏈表A和鏈表B中所有含相同數(shù)據(jù)的節(jié)點(diǎn) void DeleteEqual(Dbnode *pA,Dbnode *pB) Dbnode *pheadA=*pA;
49、0; Dbnode *pheadB=*pB; Dbnode *pheadC=NULL; if (pA=NULL | pB=NULL) /如果指針為NULL ,返回 return
50、60; if (pheadA=NULL | pheadB=NULL)/如果鏈表為空,返回 return; Dbnode *pC=GetLink(pheadA,pheadB);/獲得公共集合
51、; if (pC=NULL) return; pheadA=DeleteNode(pheadA,pC->data);/刪除pheadA和pheadB中和pC的頭節(jié)點(diǎn)值相等的所有節(jié)點(diǎn) pheadB=D
52、eleteNode(pheadB,pC->data); pheadC=pC->right; while (pheadC!=pC) /循環(huán)刪除pheadA和pheadB中和pC的頭節(jié)點(diǎn)值相等的所有節(jié)點(diǎn) pheadA=DeleteNode(pheadA,pheadC->data);
53、0; pheadB=DeleteNode(pheadB,pheadC->data); pheadC=pheadC->right; *pA=pheadA;/把處理后的鏈表再分別賦給pA和pB
54、 *pB=pheadB; /打印雙向循環(huán)鏈表 void Print(Dbnode *head) if (NULL=head) /head為NULL表示為空鏈表 getch
55、ar(); return; cout<<head->data<<" " /先打印出表頭 Dbnode *p=head->right;
56、60; while (head!=p) /依次遍歷,直到到達(dá)表尾 cout<<p->data<<" " p=p->right; &
57、#160; cout<<endl; int _tmain(int argc, _TCHAR* argv) Dbnode *pA=NULL; Dbnode *pB=NULL; Dbnode *pC=NULL; Dbnode *pheadC=pC; Dbnode *pfind=NULL; Dbnode *pNhead=NULL; Dbnode *pList=NULL; pA=CreateNode(0);/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度柑橘產(chǎn)業(yè)鏈全程托管銷(xiāo)售合同3篇
- 二零二四年度新能源汽車(chē)無(wú)償租賃示范合同2篇
- 二零二四年未成年人監(jiān)護(hù)責(zé)任擔(dān)保合同制定要領(lǐng)3篇
- 二零二四年礦產(chǎn)資源居間開(kāi)發(fā)合同3篇
- 游戲類(lèi)小程序用戶中輟行為影響因素研究
- 2025年度新型智能設(shè)備定制承攬合同(示范文本GF(2024版))4篇
- 2025年度電視節(jié)目版權(quán)分銷(xiāo)與收益分成合同4篇
- 二零二五年度交通事故損害賠償聘請(qǐng)法律服務(wù)合同
- 二零二五年度人工智能產(chǎn)品檢測(cè)服務(wù)合同規(guī)范4篇
- 二零二四年度院長(zhǎng)職責(zé)聘任與學(xué)術(shù)交流合同3篇
- 2024-2025學(xué)年北京石景山區(qū)九年級(jí)初三(上)期末語(yǔ)文試卷(含答案)
- 第一章 整式的乘除 單元測(cè)試(含答案) 2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)下冊(cè)
- 春節(jié)聯(lián)歡晚會(huì)節(jié)目單課件模板
- 中國(guó)高血壓防治指南(2024年修訂版)
- 糖尿病眼病患者血糖管理
- 抖音音樂(lè)推廣代運(yùn)營(yíng)合同樣本
- 教育促進(jìn)會(huì)會(huì)長(zhǎng)總結(jié)發(fā)言稿
- 北師大版(2024新版)七年級(jí)上冊(cè)數(shù)學(xué)第四章《基本平面圖形》測(cè)試卷(含答案解析)
- 心理調(diào)適教案調(diào)整心態(tài)積極應(yīng)對(duì)挑戰(zhàn)
- 小學(xué)數(shù)學(xué)6年級(jí)應(yīng)用題100道附答案(完整版)
- 噴漆外包服務(wù)合同范本
評(píng)論
0/150
提交評(píng)論