日韩性视频-久久久蜜桃-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;

總結

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

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

主站蜘蛛池模板: 成人xx视频| 日本视频二区 | 91蜜桃网| 思思久久精品 | 91伊人久久| 婷婷国产在线 | 91l九色lporny | 第五色婷婷| av漫画在线观看 | 免费看a级黄色片 | 久久91精品国产91久久小草 | 99在线精品免费视频 | 久久精品一二 | 中文字幕日韩精品在线 | 久久久久久久久蜜桃 | 日本一本在线观看 | 中文字幕一区二区三区门四区五区 | 国产女大学生av | 草草影院在线播放 | 国产成人一区二区三区视频 | 中文字幕第三页 | 在线观看1区 | 黄瓜视频污在线观看 | 在线观看av黄色 | 国产精品av在线免费观看 | 国产精品一线二线三线 | 日韩中文字幕在线观看视频 | 亚欧成人精品一区二区 | 一区二区国产在线 | 香蕉视频在线观看www | 少妇精品无码一区二区 | 黑巨茎大战欧美白妞 | 68日本xxxxxⅹxxx22 | 97影院在线午夜 | 国产精品自拍电影 | 久久九| 天天澡天天狠天天天做 | 国产精品一级无码 | 国产成人av一区二区三区在线观看 | 日韩特黄| 天天久久 | 欧美精品一区二区视频 | 欧亚一级片 | 华人永久免费视频 | 免费播放毛片精品视频 | 欧美成人tv| 免费黄色网址在线 | 色综合久久天天综合网 | 欧美黑人一区二区 | 人人搞人人干 | 欧美日韩在线成人 | 日韩欧美一二三 | 日本一区二区三区在线免费观看 | 黄色激情在线 | 国产a视频免费观看 | 女人高潮被爽到呻吟在线观看 | 最好看的中文字幕国语电影mv | 台湾黄色网址 | 一级爱爱片 | 亚洲精品日韩综合观看成人91 | xxxxx毛片 | 欧美体内she精高潮 日韩一区免费 | 一级片在线免费 | 无码av免费精品一区二区三区 | 69亚洲精品久久久蜜桃小说 | av在线激情 | 在线观看国产一区 | 永久免费不卡在线观看黄网站 | 韩日一区 | 国产做受麻豆动漫 | 国产乱码一区二区 | 99精品视频免费在线观看 | 最新日韩精品 | 国产一区二区久久 | 欧美双性人妖o0 | 日本在线精品 | 黄色av免费观看 | 乡村性满足hd | 在线观看黄色 | 一区二区三区在线视频免费观看 | 伊人96| 黄色国产视频网站 | 麻豆tv在线 | 国产一区免费视频 | 中文字字幕在线中文乱码电影 | 亚洲大尺度av | 91毛片网站 | 少妇资源 | 国产人成视频在线观看 | 一区二区在线免费观看视频 | 17c精品麻豆一区二区免费 | 亚洲精品视频大全 | www国产亚洲精品 | 9999国产精品 | 欧美性猛交性大交 | 成人综合在线观看 | 亚洲国产成人精品一区二区三区 | 老色批网站 | 日韩青青草 |