99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

數(shù)據(jù)結(jié)構(gòu):?jiǎn)捂湵淼呐判?/h1>

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

代碼實(shí)現(xiàn)

C語言代碼:

structListNode*sortInList(structListNode*head){
if(head==NULL)
returnNULL;
//添加一個(gè)頭指針,指向head,方便后面的排序
structListNode*H;
H=malloc(sizeof(structListNode));
H->next=head;
//第一步:定義三個(gè)指針
structListNode*p,*q,*r;
//第二步:將p指向head,并將頭指針斷開鏈接
p=H->next;
H->next=NULL;
//遍歷鏈表
while(p)
{
//第三步:q指向當(dāng)前要操作的結(jié)點(diǎn),p后移,r指向頭指針
q=p;
p=p->next;
r=H;
//第四步:將r的后繼數(shù)值與當(dāng)前操作結(jié)點(diǎn)q的值進(jìn)行比較
//若條件成立,r后移一個(gè)位置后,繼續(xù)進(jìn)行比較
//若條件不成立,跳出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é)點(diǎn)鏈表
returnH->next;
}

圖解代碼

第一步:定義三個(gè)指針

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

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

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

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

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

第四步:將r的后繼數(shù)值與當(dāng)前操作結(jié)點(diǎn)q的值進(jìn)行比較:若條件成立,r后移一個(gè)位置后,繼續(xù)進(jìn)行比較;若條件不成立,跳出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é)點(diǎn)鏈表

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

審核編輯:湯梓紅

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

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

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

    關(guān)注

    3

    文章

    573

    瀏覽量

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

    關(guān)注

    0

    文章

    13

    瀏覽量

    7013

原文標(biāo)題:數(shù)據(jù)結(jié)構(gòu):?jiǎn)捂湵淼呐判?/p>

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

    數(shù)據(jù)結(jié)構(gòu)作為嵌入式工程師必修課程之一,今天,我們就來講一講數(shù)據(jù)結(jié)構(gòu)中最簡(jiǎn)單的鏈表,包含鏈表的初始化、插入和遍歷操作。 鏈表在項(xiàng)目開發(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標(biāo)簽:LINUX/kernel/鏈表 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)
    發(fā)表于 09-25 16:41

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

    線性結(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)

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

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

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

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

    所謂鏈表,就是用一組任意的存儲(chǔ)單元存儲(chǔ)線性表元素的一種數(shù)據(jù)結(jié)構(gòu)。鏈表又分為鏈表、雙向鏈表和循環(huán)
    發(fā)表于 07-11 16:40 ?87次下載
    C語言實(shí)現(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)是對(duì)計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)的一種安排,數(shù)據(jù)結(jié)構(gòu)包括 數(shù)組, 鏈表, 棧, 二叉樹, 哈希表等,算法則對(duì)對(duì)這些結(jié)構(gòu)中的
    發(fā)表于 11-29 09:46 ?879次閱讀

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

    本文總結(jié)了數(shù)據(jù)結(jié)構(gòu)常見的八大排序算法。詳細(xì)分析請(qǐng)看下文
    發(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)核提供一套雙向鏈表的實(shí)現(xiàn),你可以在 include/linux/list.h 中找到。我們以雙向鏈表著手開始介紹 Linux 內(nèi)核中的數(shù)據(jù)結(jié)構(gòu) ,因?yàn)檫@個(gè)是在 Linux 內(nèi)核中使用最為廣泛的
    發(fā)表于 05-14 17:27 ?1998次閱讀

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

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

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

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

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

    Linux內(nèi)核實(shí)現(xiàn)了自己的鏈表數(shù)據(jù)結(jié)構(gòu),它的設(shè)計(jì)與傳統(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)和算法,其中最常用的兩個(gè)是鏈表和紅黑樹。 鏈表 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>