日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)

發(fā)布時(shí)間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

單鏈表

1、鏈接存儲(chǔ)方法

鏈接方式存儲(chǔ)的線性表簡(jiǎn)稱為鏈表(Linked List)。 ? ?  鏈表的具體存儲(chǔ)表示為:   ① 用一組任意的存儲(chǔ)單元來(lái)存放線性表的結(jié)點(diǎn)(這組存儲(chǔ)單元既可以是連續(xù)的,也可以是不連續(xù)的)   ② 鏈表中結(jié)點(diǎn)的邏輯次序和物理次序不一定相同。為了能正確表示結(jié)點(diǎn)間的邏輯關(guān)系,在存儲(chǔ)每個(gè)結(jié)點(diǎn)值的同時(shí),還必須存儲(chǔ)指示其后繼結(jié)點(diǎn)的地址(或位置)信息(稱為指針(pointer)或鏈(link)) 注意:   鏈?zhǔn)酱鎯?chǔ)是最常用的存儲(chǔ)方式之一,它不僅可用來(lái)表示線性表,而且可用來(lái)表示各種非線性的數(shù)據(jù)結(jié)構(gòu)。 2、鏈表的結(jié)點(diǎn)結(jié)構(gòu) ? ┌──┬──┐ ? │data│next│ ? └──┴──┘? ? ? ?  data域--存放結(jié)點(diǎn)值的數(shù)據(jù)域 ? ? ?  next域--存放結(jié)點(diǎn)的直接后繼的地址(位置)的指針域(鏈域) 注意: ? ?  ①鏈表通過(guò)每個(gè)結(jié)點(diǎn)的鏈域?qū)⒕€性表的n個(gè)結(jié)點(diǎn)按其邏輯順序鏈接在一起的。 ? ?  ②每個(gè)結(jié)點(diǎn)只有一個(gè)鏈域的鏈表稱為單鏈表(Single Linked List)。 3、頭指針head和終端結(jié)點(diǎn)指針域的表示 ? ?  單鏈表中每個(gè)結(jié)點(diǎn)的存儲(chǔ)地址是存放在其前趨結(jié)點(diǎn)next域中,而開(kāi)始結(jié)點(diǎn)無(wú)前趨,故應(yīng)設(shè)頭指針head指向開(kāi)始結(jié)點(diǎn)。 注意: ? ?  鏈表由頭指針唯一確定,單鏈表可以用頭指針的名字來(lái)命名。 【例】頭指針名是head的鏈表可稱為表head。   終端結(jié)點(diǎn)無(wú)后繼,故終端結(jié)點(diǎn)的指針域?yàn)榭?#xff0c;即NULL。 4、單鏈表的一般圖示法 ? ?  由于我們常常只注重結(jié)點(diǎn)間的邏輯順序,不關(guān)心每個(gè)結(jié)點(diǎn)的實(shí)際位置,可以用箭頭來(lái)表示鏈域中的指針,線性表(bat,cat,fat,hat,jat,lat,mat)的單鏈表就可以表示為下圖形式。 ? ? ? ? 5、單鏈表類型描述 ? typedef char DataType; //假設(shè)結(jié)點(diǎn)的數(shù)據(jù)域類型為字符 ? typedef struct node{ ? //結(jié)點(diǎn)類型定義 ? ? ? ?DataType data; ? ?//結(jié)點(diǎn)的數(shù)據(jù)域 ? ? ? ?struct node *next;//結(jié)點(diǎn)的指針域 ? ? ?}ListNode; ? typedef ListNode *LinkList; ? ListNode *p; ? LinkList head; ? 注意: ? ?  ①LinkList和ListNode *是不同名字的同一個(gè)指針類型(命名的不同是為了概念上更明確) ? ?  ②LinkList類型的指針變量head表示它是單鏈表的頭指針 ? ?  ③ListNode *類型的指針變量p表示它是指向某一結(jié)點(diǎn)的指針 6、指針變量和結(jié)點(diǎn)變量 ? ┌────┬────────────┬─────────────┐? │    │    指針變量    │    結(jié)點(diǎn)變量 ?    │ ├────┼────────────┼─────────────┤ │ ?定義 ?│在變量說(shuō)明部分顯式定義 ?│在程序執(zhí)行時(shí),通過(guò)標(biāo)準(zhǔn) ? ?│ │ ? ? ? ?│ ? ? ? ? ? ? ? ? ? ? ? ?│函數(shù)malloc生成 ? ? ? ? ? ?│ ├────┼────────────┼─────────────┤ │ ?取值 ?│ 非空時(shí),存放某類型結(jié)點(diǎn) │實(shí)際存放結(jié)點(diǎn)各域內(nèi)容 ? ? ?│ │ ? ? ? ?│的地址 ? ? ? ? ? ? ? ? ?│ ? ? ? ? ? ? ? ? ? ? ? ? ?│ ├────┼────────────┼─────────────┤ │操作方式│通過(guò)指針變量名訪問(wèn) ? ? │ 通過(guò)指針生成、訪問(wèn)和釋放 │ └────┴────────────┴─────────────┘ ? ? ①生成結(jié)點(diǎn)變量的標(biāo)準(zhǔn)函數(shù) ? ?  p=( ListNode *)malloc(sizeof(ListNode)); //函數(shù)malloc分配一個(gè)類型為L(zhǎng)istNode的結(jié)點(diǎn)變量的空間,并將其首地址放入指針變量p中 ②釋放結(jié)點(diǎn)變量空間的標(biāo)準(zhǔn)函數(shù)? ? ?  free(p);//釋放p所指的結(jié)點(diǎn)變量空間 ③結(jié)點(diǎn)分量的訪問(wèn)?   ? ?利用結(jié)點(diǎn)變量的名字*p訪問(wèn)結(jié)點(diǎn)分量 ?方法一:(*p).data和(*p).next ?方法二:p-﹥data和p-﹥next ④指針變量p和結(jié)點(diǎn)變量*p的關(guān)系?   ? ?指針變量p的值——結(jié)點(diǎn)地址 ? ?  結(jié)點(diǎn)變量*p的值——結(jié)點(diǎn)內(nèi)容 ? ?  (*p).data的值——p指針?biāo)附Y(jié)點(diǎn)的data域的值 ? ?  (*p).next的值——*p后繼結(jié)點(diǎn)的地址   *((*p).next)——*p后繼結(jié)點(diǎn) 注意: ? ?  ①若指針變量p的值為空(NULL),則它不指向任何結(jié)點(diǎn)。此時(shí),若通過(guò)*p來(lái)訪問(wèn)結(jié)點(diǎn)就意味著訪問(wèn)一個(gè)不存在的變量,從而引起程序的錯(cuò)誤。 ? ?  ② 有關(guān)指針類型的意義和說(shuō)明方式的詳細(xì)解釋,【參考C語(yǔ)言的有關(guān)資料】。

總結(jié)

以上是生活随笔為你收集整理的用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。