一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)據(jù)結(jié)構(gòu):單鏈表的排序

嵌入式攻城獅 ? 來源:嵌入式攻城獅 ? 2023-11-30 13:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

給定一個單鏈表的頭結(jié)點head(該結(jié)點有值),長度為n的無序單鏈表,對其按升序排序后,返回新鏈表。如當輸入鏈表 {3,1,4,5,2} 時,經(jīng)升序排列后,原鏈表變?yōu)?{1,2,3,4,5},對應(yīng)的輸出為 {1,2,3,4,5}。

代碼實現(xiàn)

C語言代碼:

structListNode*sortInList(structListNode*head){
if(head==NULL)
returnNULL;
//添加一個頭指針,指向head,方便后面的排序
structListNode*H;
H=malloc(sizeof(structListNode));
H->next=head;
//第一步:定義三個指針
structListNode*p,*q,*r;
//第二步:將p指向head,并將頭指針斷開鏈接
p=H->next;
H->next=NULL;
//遍歷鏈表
while(p)
{
//第三步:q指向當前要操作的結(jié)點,p后移,r指向頭指針
q=p;
p=p->next;
r=H;
//第四步:將r的后繼數(shù)值與當前操作結(jié)點q的值進行比較
//若條件成立,r后移一個位置后,繼續(xù)進行比較
//若條件不成立,跳出while循環(huán),將q指向r的后繼,r的后繼指向q
while(r->next&&r->next->valval)
r=r->next;
q->next=r->next;
r->next=q;
}
//第五步:返回頭指針H的后繼結(jié)點鏈表
returnH->next;
}

圖解代碼

第一步:定義三個指針

12132bb4-8f3f-11ee-939d-92fbcf53809c.png

第二步:將p指向head,并將頭指針斷開鏈接

1223a57a-8f3f-11ee-939d-92fbcf53809c.png

第三步:q指向當前要操作的結(jié)點,p后移,r指向頭指針

12399718-8f3f-11ee-939d-92fbcf53809c.png

第四步:將r的后繼數(shù)值與當前操作結(jié)點q的值進行比較:若條件成立,r后移一個位置后,繼續(xù)進行比較;若條件不成立,跳出while循環(huán),將q指向r的后繼,r的后繼指向q

1289a6d6-8f3f-11ee-939d-92fbcf53809c.png

129f9cf2-8f3f-11ee-939d-92fbcf53809c.png

12b0eee4-8f3f-11ee-939d-92fbcf53809c.png

12c50fb4-8f3f-11ee-939d-92fbcf53809c.png

12e40810-8f3f-11ee-939d-92fbcf53809c.png

12f8a22a-8f3f-11ee-939d-92fbcf53809c.png

1314ce32-8f3f-11ee-939d-92fbcf53809c.png

第五步:返回頭指針H的后繼結(jié)點鏈表

132442fe-8f3f-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141798
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70758
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40756
  • 單鏈表
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    7013

原文標題:數(shù)據(jù)結(jié)構(gòu):單鏈表的排序

文章出處:【微信號:嵌入式攻城獅,微信公眾號:嵌入式攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    鏈表結(jié)點的數(shù)據(jù)結(jié)構(gòu)該如何定義

    當用戶需要使用鏈表管理數(shù)據(jù)時,僅需關(guān)聯(lián)數(shù)據(jù)鏈表結(jié)點,最簡單的方式是將數(shù)據(jù)鏈表結(jié)點打包在一起。
    的頭像 發(fā)表于 09-20 16:28 ?1.5w次閱讀
    <b class='flag-5'>鏈表</b>結(jié)點的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>該如何定義

    數(shù)據(jù)結(jié)構(gòu)中最簡單的鏈表

    數(shù)據(jù)結(jié)構(gòu)作為嵌入式工程師必修課程之一,今天,我們就來講一講數(shù)據(jù)結(jié)構(gòu)中最簡單的鏈表,包含鏈表的初始化、插入和遍歷操作。 鏈表在項目開發(fā)中使用的
    發(fā)表于 06-13 17:40 ?528次閱讀

    Linux Kernel數(shù)據(jù)結(jié)構(gòu):鏈表

    Linux Kernel數(shù)據(jù)結(jié)構(gòu)鏈表原創(chuàng) 2016年10月20日 22:58:25標簽:LINUX/kernel/鏈表 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)
    發(fā)表于 09-25 16:41

    數(shù)據(jù)結(jié)構(gòu)的幾個重要知識點

    線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu),常用的數(shù)據(jù)結(jié)構(gòu)有:數(shù)組、鏈表、堆棧、樹、圖等,常用的排序算法有:希
    發(fā)表于 02-27 15:01

    常見的數(shù)據(jù)結(jié)構(gòu)

    的,那樣對于數(shù)據(jù)的使用簡直是個悲劇。針對此類數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)提供了圖存儲結(jié)構(gòu),專門用于存儲這類數(shù)據(jù)。二、數(shù)
    發(fā)表于 05-10 07:58

    數(shù)據(jù)結(jié)構(gòu)鏈表的基本操作

    嵌入式學(xué)習(xí)基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)鏈表的基本操作鏈表節(jié)點采用結(jié)構(gòu)體的方式進行定義,下面是最基礎(chǔ)的定義只有一個數(shù)據(jù)data,*pNext用于指向下一個節(jié)
    發(fā)表于 12-22 08:05

    C語言實現(xiàn)鏈表舉例

    所謂鏈表,就是用一組任意的存儲單元存儲線性表元素的一種數(shù)據(jù)結(jié)構(gòu)。鏈表又分為鏈表、雙向鏈表和循環(huán)
    發(fā)表于 07-11 16:40 ?87次下載
    C語言實現(xiàn)<b class='flag-5'>單</b><b class='flag-5'>鏈表</b>舉例

    算法與數(shù)據(jù)結(jié)構(gòu)——雙向鏈表

    第三章為算法與數(shù)據(jù)結(jié)構(gòu),本文為3.3 雙向鏈表。
    的頭像 發(fā)表于 09-19 17:56 ?7557次閱讀
    算法與<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>——雙向<b class='flag-5'>鏈表</b>

    java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)

    數(shù)據(jù)結(jié)構(gòu)是對計算機內(nèi)存中的數(shù)據(jù)的一種安排,數(shù)據(jù)結(jié)構(gòu)包括 數(shù)組, 鏈表, 棧, 二叉樹, 哈希表等,算法則對對這些結(jié)構(gòu)中的
    發(fā)表于 11-29 09:46 ?879次閱讀

    數(shù)據(jù)結(jié)構(gòu)常見的八大排序算法

    本文總結(jié)了數(shù)據(jù)結(jié)構(gòu)常見的八大排序算法。詳細分析請看下文
    發(fā)表于 02-05 15:26 ?1896次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>常見的八大<b class='flag-5'>排序</b>算法

    你知道Linux內(nèi)核數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的作用?

    Linux 內(nèi)核提供一套雙向鏈表的實現(xiàn),你可以在 include/linux/list.h 中找到。我們以雙向鏈表著手開始介紹 Linux 內(nèi)核中的數(shù)據(jù)結(jié)構(gòu) ,因為這個是在 Linux 內(nèi)核中使用最為廣泛的
    發(fā)表于 05-14 17:27 ?1998次閱讀

    什么是棧?數(shù)據(jù)結(jié)構(gòu)中棧如何實現(xiàn)

    今天放松一下,我們來看看數(shù)據(jù)結(jié)構(gòu)中的棧,這節(jié)的知識點可以說是數(shù)據(jù)結(jié)構(gòu)中最容易上手的知識點了,其實比起鏈表,其實鏈表也有棧和隊列的模型,鏈表
    發(fā)表于 04-29 18:25 ?0次下載
    什么是棧?<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>中棧如何實現(xiàn)

    解析數(shù)據(jù)結(jié)構(gòu)的常用七大排序算法

    為了讓大家掌握多種排序方法的基本思想,本篇文章帶著大家對數(shù)據(jù)結(jié)構(gòu)的常用七大算法進行分析:包括直接插入排序、希爾排序、冒泡排序、快速
    的頭像 發(fā)表于 03-16 08:22 ?1977次閱讀

    Linux內(nèi)核的鏈表數(shù)據(jù)結(jié)構(gòu)

    Linux內(nèi)核實現(xiàn)了自己的鏈表數(shù)據(jù)結(jié)構(gòu),它的設(shè)計與傳統(tǒng)的方式不同,非常巧妙也很通用。
    的頭像 發(fā)表于 03-24 11:34 ?1074次閱讀
    Linux內(nèi)核的<b class='flag-5'>鏈表</b><b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    Linux內(nèi)核中使用的數(shù)據(jù)結(jié)構(gòu)

    Linux內(nèi)核代碼中廣泛使用了數(shù)據(jù)結(jié)構(gòu)和算法,其中最常用的兩個是鏈表和紅黑樹。 鏈表 Linux內(nèi)核代碼大量使用了鏈表這種數(shù)據(jù)結(jié)構(gòu)。
    的頭像 發(fā)表于 11-09 14:24 ?771次閱讀
    Linux內(nèi)核中使用的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>