精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

數據結構:單鏈表的排序

嵌入式攻城獅 ? 來源:嵌入式攻城獅 ? 2023-11-30 13:56 ? 次閱讀

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

代碼實現

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指向當前要操作的結點,p后移,r指向頭指針
q=p;
p=p->next;
r=H;
//第四步:將r的后繼數值與當前操作結點q的值進行比較
//若條件成立,r后移一個位置后,繼續進行比較
//若條件不成立,跳出while循環,將q指向r的后繼,r的后繼指向q
while(r->next&&r->next->valval)
r=r->next;
q->next=r->next;
r->next=q;
}
//第五步:返回頭指針H的后繼結點鏈表
returnH->next;
}

圖解代碼

第一步:定義三個指針

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

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

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

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

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

第四步:將r的后繼數值與當前操作結點q的值進行比較:若條件成立,r后移一個位置后,繼續進行比較;若條件不成立,跳出while循環,將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的后繼結點鏈表

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136251
  • 代碼
    +關注

    關注

    30

    文章

    4753

    瀏覽量

    68368
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40095
  • 單鏈表
    +關注

    關注

    0

    文章

    13

    瀏覽量

    6915

原文標題:數據結構:單鏈表的排序

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

收藏 人收藏

    評論

    相關推薦

    鏈表結點的數據結構該如何定義

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

    數據結構中最簡單的鏈表

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

    Linux Kernel數據結構:鏈表

    Linux Kernel數據結構鏈表原創 2016年10月20日 22:58:25標簽:LINUX/kernel/鏈表 數據結構數據結構
    發表于 09-25 16:41

    數據結構的幾個重要知識點

    線性結構、樹形結構、圖狀結構,常用的數據結構有:數組、鏈表、堆棧、樹、圖等,常用的排序算法有:希
    發表于 02-27 15:01

    常見的數據結構

    的,那樣對于數據的使用簡直是個悲劇。針對此類數據數據結構提供了圖存儲結構,專門用于存儲這類數據。二、
    發表于 05-10 07:58

    數據結構鏈表的基本操作

    嵌入式學習基礎-數據結構鏈表的基本操作鏈表節點采用結構體的方式進行定義,下面是最基礎的定義只有一個數據data,*pNext用于指向下一個節
    發表于 12-22 08:05

    C語言實現鏈表舉例

    所謂鏈表,就是用一組任意的存儲單元存儲線性表元素的一種數據結構鏈表又分為鏈表、雙向鏈表和循環
    發表于 07-11 16:40 ?87次下載
    C語言實現<b class='flag-5'>單</b><b class='flag-5'>鏈表</b>舉例

    算法與數據結構——雙向鏈表

    第三章為算法與數據結構,本文為3.3 雙向鏈表
    的頭像 發表于 09-19 17:56 ?7264次閱讀
    算法與<b class='flag-5'>數據結構</b>——雙向<b class='flag-5'>鏈表</b>

    java數據結構學習

    數據結構是對計算機內存中的數據的一種安排,數據結構包括 數組, 鏈表, 棧, 二叉樹, 哈希表等,算法則對對這些結構中的
    發表于 11-29 09:46 ?769次閱讀

    數據結構常見的八大排序算法

    本文總結了數據結構常見的八大排序算法。詳細分析請看下文
    發表于 02-05 15:26 ?1825次閱讀
    <b class='flag-5'>數據結構</b>常見的八大<b class='flag-5'>排序</b>算法

    你知道Linux內核數據結構中雙向鏈表的作用?

    Linux 內核提供一套雙向鏈表的實現,你可以在 include/linux/list.h 中找到。我們以雙向鏈表著手開始介紹 Linux 內核中的數據結構 ,因為這個是在 Linux 內核中使用最為廣泛的
    發表于 05-14 17:27 ?1869次閱讀

    什么是棧?數據結構中棧如何實現

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

    解析數據結構的常用七大排序算法

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

    Linux內核的鏈表數據結構

    Linux內核實現了自己的鏈表數據結構,它的設計與傳統的方式不同,非常巧妙也很通用。
    的頭像 發表于 03-24 11:34 ?816次閱讀
    Linux內核的<b class='flag-5'>鏈表</b><b class='flag-5'>數據結構</b>

    Linux內核中使用的數據結構

    Linux內核代碼中廣泛使用了數據結構和算法,其中最常用的兩個是鏈表和紅黑樹。 鏈表 Linux內核代碼大量使用了鏈表這種數據結構
    的頭像 發表于 11-09 14:24 ?456次閱讀
    Linux內核中使用的<b class='flag-5'>數據結構</b>