日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

带环相交链表问题

發布時間:2024/1/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带环相交链表问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

帶環相交鏈表問題

  • 設計目的:
  • 總覽效果效果:
  • 需求分析
  • 概要設計
  • 詳細設計

設計目的:

掌握鏈表的基本操作。
掌握帶環鏈表的相關操作算法。

總覽效果效果:


需求分析

1需要帶頭結點的單鏈表,根據元素值輸入對比,修改鏈域,形成新鏈表。
2快慢指針法或者標記數組兩種方法。
3修改鏈域,恢復單鏈表,根據鏈表長度,遍歷鏈表得到鏈表中間節點。
4分四種情況討論鏈表相交情況。

概要設計

1struct node{數據域;鏈域;標記位;}
2void makecircle(double x,double y)//輸入元素值成環
{ 1,找到值為x,y的指針;
2y的鏈域指向x,x鏈域指向空;
}
3void iscircle()//標記數組法
{1,將節點標記位置為1;
2,遍歷鏈表,并修改節點標志位為0;
3,判斷節點的下一節點的標記位若為0,則有環,否則無環。
}
Void Iscircle()//快慢指針法
{ 1,快指針每次前進2,慢指針每次前進1;
2,快慢指針若相等,則有環,否則無環。
}
4 void notcircle()
{1,修改鏈域,恢復成單鏈表;
2,第一遍遍歷鏈表,求出鏈表節點個數;
3,第二遍遍歷鏈表,求出中間節點位置指針;
}
5
Nodeischarge()
{( 1)一個鏈表有環,一個鏈表無環,則兩鏈表不相交。
(2)兩個鏈表均有環,用一個鏈表快慢指針的相遇點去遍歷,若遇到另一個鏈表的相遇點則相交,共用一個環,否則不相交。
(3)兩個鏈表相交,交點在環外,修改鏈域轉化為不帶環的兩個單鏈表求交點。
(4)兩個鏈表相交,交點在環上。
}
Node entrynode()//得到環路入口位置
{根據追及相遇問題模型,頭指針和快慢指針相遇點每次進一,最后相等的位置即為環路入口位置。}

詳細設計

1if (temp1 > temp2){node* p;p = p2;p2 = p1;p1 = p;}//始終令p1指向先出現得節點 newfirst = new node;newfirst->link = p2->link;//新頭節點指向p2得后續節點p2->link = p1;//成環 2while (current != NULL){ if (current->link->flag == 0){current->flag = 1;current = current->link;// 遍歷過程中修改標志位}else if (current->link->flag == 1){n = current;m = current->link;// 返回環路起點 終點return true;} while (fast != NULL && fast->link != NULL)//快指針先為空,則為單鏈表無環{ slow = slow->link; //慢指針每次前進一步fast = fast->link->link;//快指針每次前進兩步if (slow == fast) //相遇,存在環break;}if (fast && fast->link) return fast; 3, int cnt = 0;//計數器while (current != NULL){cnt++;current = current->link;}//若有偶數個節點 輸出中間兩個 若有奇數個節點 輸出正中間得current = first->link; int i = 0;while (current != NULL){i++;if (i == (cnt / 2)) break;else current = current->link;} 4,node* circlenode1 = Iscircle(p);node* circlenode2 = Iscircle(q);if (circlenode1 == NULL || circlenode1 == NULL) return NULL;//第一種情況,如果其中任意一條鏈不帶環 則不相交 while (current != circlenode1 && current != circlenode2) current = current->link;if (current != circlenode2) return NULL;//第二種情況,都有環,用一個相遇點去遍歷,未遇到另一個相遇點,則不相交。node* entry1 = entrynode(p, circlenode1);node* entry2 = entrynode(q, circlenode2); if (entry1 == entry2)//情況3,將環去掉,轉化為兩個單鏈表相交,求交點{while (current1 != NULL){while (current2 != NULL){if (current1 == current2)return current1;else current2 = current2->link;}current2 = q;current1 = current->link;}} //第四種情況,兩個入口點,任意返回return entry1;

總結

以上是生活随笔為你收集整理的带环相交链表问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱人伦 | 欧美黄页在线观看 | 少妇在线观看 | 人人妻人人澡人人爽人人dvd | 精品中文一区二区三区 | 午夜激情视频在线观看 | 中文字幕在线精品 | 这里只有精品免费视频 | 麻豆网站免费观看 | 99中文字幕 | 夜色网| 深夜成人福利 | 成人做爰www看视频软件 | 在线观看高清av | 欧美黑人性xxx猛交 少妇无套内谢久久久久 | 日本高清视频www | 日本人的性生活视频 | 丝袜熟女一区二区三区 | 欧美日韩精品久久 | 色婷婷777 | 污视频网址在线观看 | 国产片在线 | 亚洲女人天堂成人av在线 | 亚洲精品一区二区三区蜜桃 | 欧美激情精品 | 精品熟女一区二区 | 国产又粗又硬 | 亚洲综合图区 | 老司机av福利 | 久久99久久精品 | 中文字幕永久在线观看 | 天美乌鸦星空mv | 色婷婷免费视频 | 三级影片在线播放 | 国产资源在线播放 | 久草视频福利在线 | 人妻少妇被粗大爽9797pw | 国产91在线看 | 手机在线永久免费观看av片 | 三级色网站| 国产精品久久国产愉拍 | 欧洲一区二区 | 夜夜导航 | 欧美精品一区二区三区三州 | 日美女逼逼 | 国产精品入口66mio | 99精品久久久久 | 日本一区二区三区久久久久 | 国产一级在线免费观看 | 蜜臀av一区二区三区 | 成人av黄色 | 这里只有精品视频在线 | www..com黄色| 国产123在线| 成年网站 | wwwxx在线观看| 一本大道久久久久精品嫩草 | 青青草久久伊人 | 91精品国产综合久久久久 | 警察高h荡肉呻吟男男 | 国产三级精品三级在线观看 | 羞羞漫画在线播放 | 亚洲免费观看在线 | 亚洲国产av一区二区 | 高潮毛片无遮挡免费看 | 国产激情在线视频 | 精品人妻一区二区三区日产乱码卜 | 欧美人与性动交ccoo | 一个人在线观看www软件 | 亚洲网址在线观看 | 黑人糟蹋人妻hd中文字幕 | 97超碰免费在线观看 | 黄色av免费在线观看 | 日韩成人一级 | 少妇免费毛片久久久久久久久 | 成人黄色在线网站 | 欧美视频一区二区在线观看 | 成人黄色国产 | 亚洲无码精品在线播放 | 91久久国产综合久久91精品网站 | 亚洲免费视频一区 | 91香蕉视频黄 | 午夜不卡影院 | 日韩视频在线观看免费视频 | 禁网站在线观看免费视频 | 五十路妻 | 永久免费av网站 | 国产精品theporn | 欧美日韩一区二区在线视频 | 最新毛片网站 | 欧美高清性 | 欧美日韩高清免费 | 国产成人在线视频网站 | 亚洲在线视频免费观看 | jizz日本免费 | 四虎影视永久 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 暴操白虎 | 视频免费在线 |