亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

單鏈表編程題

2019-11-06 06:32:30
字體:
供稿:網(wǎng)友

找出單鏈表的中間元素 算法思想:使用兩個指針first和second,只是first每次走一步,second每次走兩步:

static Link GetMiddleOne(Link head){Link first = head;Link second = head;while (first != null && first.Next != null){first = first.Next.Next;second = second.Next;}return second;}

但是,這道題目有個地方需要注意,就是對于鏈表元素個數(shù)為奇數(shù),以上算法成立。如果鏈表元素個數(shù)為偶數(shù),那么在返回second的同時,還要返回second.Next也就是下一個元素,它倆都算是單鏈表的中間元素。 下面是加強(qiáng)版的算法,無論奇數(shù)偶數(shù),一概通殺:

static void Main(string[] args){Link head = GenerateLink();bool isOdd = true;Link middle = GetMiddleOne(head, ref isOdd);if (isOdd){Console.WriteLine(middle.Data);}else{Console.WriteLine(middle.Data);Console.WriteLine(middle.Next.Data);}Console.Read();}static Link GetMiddleOne(Link head, ref bool isOdd){Link first = head;Link second = head;while (first != null && first.Next != null){first = first.Next.Next;second = second.Next;}if (first != null)isOdd = false;return second;}

兩個不交叉的有序鏈表的合并 有兩個有序鏈表,各自內(nèi)部是有序的,但是兩個鏈表之間是無序的。 算法思路:當(dāng)然是循環(huán)逐項比較兩個鏈表了,如果一個到了頭,就不比較了,直接加上去。 注意,對于2個元素的Data相等(僅僅是Data相等哦,而不是相同的引用),我們可以把它視作前面的Data大于后面的Data,從而節(jié)省了算法邏輯。

static Link MergeTwoLink(Link head1, Link head2){Link head = new Link(null, Int16.MinValue);Link PRe = head;Link curr = head.Next;Link curr1 = head1;Link curr2 = head2;//compare until one link run to the endwhile (curr1.Next != null && curr2.Next != null){if (curr1.Next.Data < curr2.Next.Data){curr = new Link(null, curr1.Next.Data);curr1 = curr1.Next;}else{curr = new Link(null, curr2.Next.Data);curr2 = curr2.Next;}pre.Next = curr;pre = pre.Next;}//if head1 run to the endwhile (curr1.Next != null){curr = new Link(null, curr1.Next.Data);curr1 = curr1.Next;pre.Next = curr;pre = pre.Next;}//if head2 run to the endwhile (curr2.Next != null){curr = new Link(null, curr2.Next.Data);curr2 = curr2.Next;pre.Next = curr;pre = pre.Next;}return head;}

如果這兩個有序鏈表交叉組成了Y型呢,比如說: 這時我們需要先找出這個交叉點(diǎn)。 然后局部修改上面的算法,只要其中一個鏈表到達(dá)了交叉點(diǎn),就直接把另一個鏈表的剩余元素都加上去。如下所示:

static Link MergeTwoLink2(Link head1, Link head2){Link head = new Link(null, Int16.MinValue);Link pre = head;Link curr = head.Next;Link intersect = GetIntersect(head1, head2);Link curr1 = head1;Link curr2 = head2;//compare until one link run to the intersectwhile (curr1.Next != intersect && curr2.Next != intersect){if (curr1.Next.Data < curr2.Next.Data){curr = new Link(null, curr1.Next.Data);curr1 = curr1.Next;}else{curr = new Link(null, curr2.Next.Data);curr2 = curr2.Next;}pre.Next = curr;pre = pre.Next;}//if head1 run to the intersectif (curr1.Next == intersect){while (curr2.Next != null){curr = new Link(null, curr2.Next.Data);curr2 = curr2.Next;pre.Next = curr;pre = pre.Next;}}//if head2 run to the intersectelse if (curr2.Next == intersect){while (curr1.Next != null){curr = new Link(null, curr1.Next.Data);curr1 = curr1.Next;pre.Next = curr;pre = pre.Next;}}return head;}

兩個單鏈表相交,計算相交點(diǎn) 分別遍歷兩個單鏈表,計算出它們的長度M和N,假設(shè)M比N大,則長度M的鏈表先前進(jìn)M-N,然后兩個鏈表同時以步長1前進(jìn),前進(jìn)的同時比較當(dāng)前的元素,如果相同,則必是交點(diǎn)。

public static Link GetIntersect(Link head1, Link head2){Link curr1 = head1;Link curr2 = head2;int M = 0, N = 0;//goto the end of the link1while (curr1.Next != null){curr1 = curr1.Next;M++;}//goto the end of the link2while (curr2.Next != null){curr2 = curr2.Next;N++;}//return to the begining of the linkcurr1 = head1;curr2 = head2;if (M > N){for (int i = 0; i < M – N; i++)curr1 = curr1.Next;}else if (M < N){for (int i = 0; i < N – M; i++)curr2 = curr2.Next;}while (curr1.Next != null){if (curr1 == curr2){return curr1;}curr1 = curr1.Next;curr2 = curr2.Next;}return null;}

單鏈表排序 無外乎是冒泡、選擇、插入等排序方法。關(guān)鍵是交換算法,需要額外考慮。本題的排序過程中,我們可以在外層和內(nèi)層循環(huán)里面,捕捉到pre1和pre2,然后進(jìn)行交換,而無需每次交換又要遍歷一次單鏈表。在實踐中,我發(fā)現(xiàn)冒泡排序和選擇排序都要求內(nèi)層循環(huán)從鏈表的末尾向前走,這明顯是不合時宜的。所以我最終選擇了插入排序算法,如下所示: 先給出基于數(shù)組的算法:

static int[]InsertSort(int[] arr){for(int i=1; i<arr.Length;i++){for(int j =i; (j>0)&&arr[j]<arr[j-1];j–){arr[j]=arr[j]^arr[j-1];arr[j-1]=arr[j]^arr[j-1];arr[j]=arr[j]^arr[j-1];}}return arr;}

仿照上面的思想,我們來編寫基于Link的算法:

public static Link SortLink(Link head){Link pre1 = head;Link pre2 = head.Next;Link min = null;for (Link curr1 = head.Next; curr1 != null; curr1 = min.Next){if (curr1.Next == null)break;min = curr1;for (Link curr2 = curr1.Next; curr2 != null; curr2 = curr2.Next){//swap curr1 and curr2if (curr2.Data < curr1.Data){min = curr2;curr2 = curr1;curr1 = min;pre1.Next = curr1;curr2.Next = curr1.Next;curr1.Next = pre2;//if exchange element n-1 and n, no need to add reference from pre2 to curr2, because they are the same oneif (pre2 != curr2)pre2.Next = curr2;}pre2 = curr2;}pre1 = min;pre2 = min.Next;}return head;}

值得注意的是,很多人的算法不能交換相鄰兩個元素,這是因為pre2和curr2是相等的,如果此時還執(zhí)行pre2.Next = curr2; 會造成一個自己引用自己的環(huán)。 交換指針很是麻煩,而且效率也不高,需要經(jīng)常排序的東西最好不要用鏈表來實現(xiàn),還是數(shù)組好一些。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
99热这里只有精品99| 国产青青视频| 国产99在线|中文| 国产欧美韩日| 麻豆精品视频| 日本成人超碰在线观看| 欧美黑人巨大xxx极品| 99在线视频免费| 老牛嫩草一区二区三区日本| 清纯唯美亚洲激情| 亚洲乱码中文字幕| 日韩一级免费看| 一本在线高清不卡dvd| 精品日本高清在线播放| 女同激情久久av久久| 久久久久久久久久久99999| 精品123区| 欧美大片免费久久精品三p| 欧美激情欧美狂野欧美精品| 亚洲人成高清| 日韩av中文字幕一区| 欧美日韩免费一区| 99蜜月精品久久91| 国产精品嫩草影院在线看| 91精品婷婷国产综合久久| 国产精品久久久久久一区二区三区| 亚洲自拍三区| 欧美午夜aaaaaa免费视频| xxxx日本少妇| 一区二区三区欧美成人| 希岛爱理中文字幕| 激情五月综合色婷婷一区二区| 欧美v国产在线一区二区三区| 国产精品亚洲美女av网站| 色噜噜狠狠一区二区三区| 久久久久久18| 动漫av免费观看| 在线观看一区二区三区视频| 日韩大片在线永久免费观看网站| 18av网站| 制服丝袜亚洲网站| 在线手机中文字幕| 日韩精品午夜视频| 国产精品天美传媒入口| 亚洲AV无码精品国产| 久久视频免费在线| 亚洲综合激情六月婷婷在线观看| 奇米影视狠888| 欧美日韩在线视频播放| 99免费精品在线观看| 欧美日本一区二区视频在线观看| 蜜桃精品成人影片| 亚洲の无码国产の无码步美| 8x8ⅹ拨牐拨牐拨牐在线观看| 成人高清视频免费观看| 精品一二三四区| 日韩av电影国产| 日本福利一区二区| 国产欧美一区二区三区视频在线观看| 欧美色精品天天在线观看视频| 国产精品久久久久久av下载红粉| 久久国产精品视频在线观看| 色一情一乱一乱一区91av| 人善交video高清| www.成人69.com| 色悠悠久久综合| 国产精品中文字幕一区二区三区| 亚洲承认视频| 婷婷激情综合| 成人手机视频在线| 人人干人人草| 色中文字幕在线观看| 日本女优一区| 成人免费毛片xxx| 播放灌醉水嫩大学生国内精品| 无码无遮挡又大又爽又黄的视频| 日韩福利电影在线观看| 亚洲激情在线观看| 亚洲色偷精品一区二区三区| www.99久久热国产日韩欧美.com| av在线一区不卡| 岛国一区二区在线观看| 日韩中文字幕a| 欧美女同在线观看| a级免费在线观看| 免费看黄裸体一级大秀欧美| 精品人妻无码一区二区三区| 免费看美女隐私的视频| 国产精品一二三在线观看| 99一区二区三区| 亚洲欧洲精品一区二区三区不卡| 国产精品对白久久久久粗| 国产免费黄色录像| 蜜桃视频在线观看播放| 日韩精品免费一区二区在线观看| 欧洲女同同性吃奶| 亚洲美女性生活视频| 亚洲卡通动漫在线| 国产又色又爽又黄的| 伊人网综合在线| h片在线观看视频免费| 成年人视频在线免费观看| 久热re国产手机在线观看| 亚洲男人天堂av| 91精品国产九九九久久久亚洲| 国产成人综合自拍| 国产网站一区二区三区| 欧美日韩视频免费播放| 国产日韩欧美一区二区三区四区| 国产一区二区三区电影在线观看| 亚洲精品在线看| 久久久久久有精品国产| 另类小说欧美激情| 制服师生第一页| 伊人久久精品一区二区三区| 一区二区三区视频在线| 青青草在线视频免费观看| 9色视频在线观看| 色狠狠桃花综合| 精品人妻av一区二区三区| 国产999视频| 色综合视频网站| 久久国产精品国产精品| 在线观看视频一区| 亚洲国产视频一区二区| 欧美a一级片| 丰满少妇一区二区| 亚洲尤物在线视频| 捆绑紧缚一区二区三区在线观看| 一级片aaaa| 一级黄色在线观看| 色男人天堂av| 蜜桃日韩视频| 天天操夜夜操夜夜操| av片在线观看| 免费h网站在线观看| 激情中国色综合| 亚洲私拍自拍| 国产日韩欧美大片| 亚洲国产精品久久精品怡红院| 91超薄肉色丝袜交足高跟凉鞋| 午夜精品久久久久久久男人的天堂| 男人的天堂亚洲| jizz日本大全| 中文字幕乱码人妻无码久久| 性欧美18一19内谢| 亚洲精品成人自拍| 亚洲国产成人一区| 撸视在线观看免费视频| 国语对白精品一区二区| 亚洲美女又黄又爽在线观看| 久草在线资源站资源站| 日韩黄色免费网站| 欧美男男大粗吊1069| 欧美人与动性xxxxbbbb| av剧情在线观看| 欧美无人高清视频在线观看| 91精品国产一区| 一本色道久久综合亚洲精品图片| 中文字幕乱码一区二区| 色中色在线视频| 国产suv一区二区| 国产欧美一区二区三区另类精品| 午夜免费福利网站| 精品免费囯产一区二区三区| 久久99精品一区二区三区| 日韩电影免费| 可以在线观看av的网站| 91精品国产高清一区二区三区| 超级污的网站| 日韩专区在线观看| 久久精品999| 国内自拍偷拍视频| 狠狠色狠狠色综合人人| 亚洲国产一区自拍| 日韩精品诱惑一区?区三区| 久草资源在线视频| 麻豆专区一区二区三区四区五区| 宇都宫紫苑在线播放| 99国产精品99| 国产精品久久久免费| 欧洲金发美女大战黑人| 大乳在线免费观看| 黄色一级视频在线观看| 天天做天天爱天天爽综合网| 一二三区精品视频| 很黄很黄的网站免费的| 9久久婷婷国产综合精品性色| 国产熟妇久久777777| 久久久久国产精品区片区无码| 亚洲一区二区三区四区五区| 国产精品污www一区二区三区| 国产精品一区二区久激情瑜伽| 欧美成人另类视频| 精品国产欧美一区二区三区成人| 天天揉久久久久亚洲精品| 久久夜夜久久| 日韩免费看网站| 一区二区影视| 天堂资源在线中文精品| 久草在线资源视频在线观看| 亚洲成人精品一区二区三区| 91精品久久久久久久蜜月| 欧美一区二区视频17c| 精品美女久久久| 天天影视欧美综合在线观看| 亚洲欧洲综合| 里番在线观看网站| 黑人精品xxx一区| 国产精自产拍久久久久久| 精品国产一区二区三区四| 亚洲老司机av| 国产一区二区毛片| 99v久久综合狠狠综合久久| 北条麻妃一区二区三区在线| 欧美日韩xxxxx| 欧美极品jizzhd欧美18| 久久久精品麻豆| 日韩资源在线观看| 国产一区二区高清| 无码人妻精品一区二区三区在线| 欧美视频中文一区二区三区在线观看| 亚洲日本japanese丝袜| 亚洲午夜精品一区二区| www.youjizz.com亚洲| 风间由美一二三区av片| 五月天婷婷在线观看视频| 欧美电影在线观看网站| 熟女少妇内射日韩亚洲| 欧美孕妇孕交黑巨大网站| 精品久久久久久中文字幕大豆网| 香蕉大人久久国产成人av| 国产99999| 香蕉视频在线观看www| 日本免费资源| 亚洲精品中文字幕乱码三区不卡| 青青视频免费在线观看| 欧美激情电影| 男女羞羞电影免费观看| 国内外成人激情免费视频| 九色自拍视频在线观看| 91av视频在线免费观看| 国产日韩精品推荐| 欧美人与性动交xxⅹxx| 岛国一区二区三区高清视频| 午夜视黄欧洲亚洲| 91精品婷婷国产综合久久蝌蚪| 久久爱www.| 香港一级纯黄大片| 日本黄色www| 欧美日韩国产一区二区三区不卡| 国产在线超碰| 嫩呦国产一区二区三区av| 国产成人免费视频app| 激情综合视频| 六月丁香婷婷在线| 国产精品91一区| 国产精品夜夜嗨| 欧美日韩视频在线第一区| 日韩在线观看视频一区| 国产欧美精品区一区二区三区| 成人午夜影视| 在线观看视频亚洲| 久久久精品视频在线| 欧美aaaaaa午夜精品| 成人国产精品av| 伪装者免费全集在线观看| 粉嫩aⅴ一区二区三区| 日韩精品中文字幕一区二区| 免费91在线观看| http://嫩草影院| 九色porny视频在线观看| 亚洲综合在线网| 成人免费一区二区三区视频| 色狠狠av一区二区三区香蕉蜜桃| 午夜国产小视频| 91精品一区二区三区四区| 日韩欧美国产一二三区| 黄色av一区| 免费黄色电影在线观看| 国产精品毛片视频| 国产精品无码无卡无需播放器| av电影在线免费| 一级黄色大片免费| 日韩激情在线观看| 在线看欧美日韩| 亚洲免费在线播放视频| 天堂va欧美ⅴa亚洲va一国产| 国产精品一二二区| 国产一区二区三区久久精品| 91九色国产在线| www.av亚洲| 久久久爽爽爽美女图片| 日韩久久精品一区二区三区| 在线国产日本| 成人av网站在线播放| 国产精品视频一区视频二区| 在线永久免费观看黄网站| 福利电影导航| 国产成人综合在线视频| 五月天亚洲综合情| www.国产在线| 色999久久久精品人人澡69| 91小视频在线免费看| 欧美成人女星排行榜| 中文视频一区| 国产高清av在线播放| av老司机免费在线| 日韩电影在线一区二区| 欧美激情图片小说| 欧美日韩在线视频一区二区三区| 尤物在线观看| 日韩亚洲欧美一区二区| 亚洲激情电影在线| 国 产 黄 色 大 片| 国产精品夜夜夜爽阿娇| 婷婷综合电影| 免费三级网站| 欧美一级片在线| 哪个网站能看毛片| 99re国产在线| 久久人91精品久久久久久不卡| 国产综合无码一区二区色蜜蜜| 国产三级精品三级在线| 成人欧美一区二区三区视频网页| 五月天丁香激情| 色婷婷久久一区二区三区麻豆| 国产手机视频一区二区|