c單向連結串列和雙向連結串列有什麼區別?各自有什麼優

時間 2021-06-20 20:46:21

1樓:匿名使用者

一、指代不同

1、雙向連結串列:也叫雙連結串列,是連結串列的一種,每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅

二、優點不同

1、雙向連結串列:從雙向連結串列中的任意一個結點開始,都可以很方便地訪問前驅結點和後繼結點。

2、單向連結串列:單個結點建立非常方便,普通的線性記憶體通常在建立的時候就需要設定資料的大小,結點的訪問方便,可以通過迴圈或者遞迴的方法訪問到任意資料。

三、缺點不同

1、雙向連結串列:增加刪除節點複雜,需要多分配一個指標儲存空間。

2、單向連結串列:結點的刪除非常方便,不需要像線性結構那樣移動剩下的資料,但是平均的訪問效率低於線性表。

2樓:大野瘦子

區別:一、意思不同

雙向連結串列是每個節點有2個連結,一個是指向前一個節點(當此連結為第一個連結時,指向的是空值或空列表),另一個則指向後一個節點(當此連結為最後一個連結時,指向的是空值或空列表),意思就是說雙向連結串列有2個指標,一個是指向前一個節點的指標,另一個則指向後一個節點的指標。

二、使用場景不同

單向連結串列適用於節點的增加刪除,雙向連結串列適用於需要雙向查詢節點值的情況。

三、用法不同

每個雙連結串列的節點要比單連結串列的節點多一個指標,而長度為n就需要 n*length(這個指標的length在32位系統中是4位元組,在64位系統中是8個位元組) 的空間,這在一些追求時間效率不高應用下並不適應,因為它佔用空間大於單連結串列所佔用的空間;這時設計者就會採用以時間換空間的做法,這時一種工程總體上的衡量。

優缺點:

一、單向連結串列

優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈。

缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是隻能前進。

二、雙向連結串列

優點:可以找到前驅和後繼,可進可退。

缺點:增加刪除節點複雜,需要多分配一個指標儲存空間。

3樓:匿名使用者

一、結構不一樣

1、單向連結串列:每個節點由一個資料域和一個指標域構成。

2、雙向連結串列:每個節點由一個資料域和兩個指標域構成。

二、方向不一樣

三、適用不一樣

1、單向列表:適用於單向遍歷,儲存空間小的資料。

2、雙向列表:適用於雙向遍歷資料。

單向連結串列的優缺點:

1、優點:儲存空間小,增加刪除節點簡單。

2、缺點:只能從頭到尾遍歷。只能找到後繼節點,無法找到前驅節點。

雙向連結串列的優缺點:

1、優點:可以雙向遍歷,既能找到後繼節點,也能找到前驅節點。從任一節點都可以訪問到其他所有節點。

2、缺點:儲存空間大,增加刪除節點較複雜。

擴充套件資料連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。連結串列由一系列結點組成,每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標域。

4樓:射手座的

單向連結串列和雙向連結串列的區別:

一、方向不同

二、使用情況不同

1、單向連結串列:適用於節點的增加刪除。

2、雙向連結串列:適用於需要雙向查詢節點值的情況。

三、讀取不同

1、單向連結串列:只能單向讀取。

2、雙向連結串列:可以雙方向讀取。

單向連結串列和雙向連結串列的區別可看下圖:

單向連結串列的優點和缺點:

2、優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈;

3、缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是隻能前進。

4、適用於節點的增加刪除。

雙向連結串列的優點和缺點:

1、雙向連結串列:有兩個指標,一個指向前一個節點,一個後一個節點。

2、優點:可以找到前驅和後繼,可進可退;

3、缺點:增加刪除節點複雜,多需要分配一個指標儲存空間。

4、適用於需要雙向查詢節點值的情況。

單向連結串列(單連結串列)是連結串列的一種,其特點是連結串列的連結方向是單向的,對連結串列的訪問要通過順序讀取從頭部開始;連結串列是使用指標進行構造的列表;又稱為結點列表,因為連結串列是由一個個結點組裝起來的;其中每個結點都有指標成員變數指向列表中的下一個結點;

列表是由結點構成,head指標指向第一個成為表頭結點,而終止於最後一個指向null的指標。

雙向連結串列也叫雙連結串列,是連結串列的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向連結串列中的任意一個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈連結串列。

5樓:愛講真話的阿拉蕾

2、功能不同:單向連結串列只能next ,雙向連結串列可以return。

3、單雙向不同:單連結串列只能單向讀取,雙向連結串列可以通過prev()快速找到前一結點。

單向連結串列優缺點:

1、優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈;

2、缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是隻能前進。

雙向連結串列優缺點:

1、優點:可以找到前驅和後繼,可進可退;

2、缺點:增加刪除節點複雜,多需要分配一個指標儲存空間。

6樓:你好嗎快樂嗎

單向連結串列:單向連結串列包含兩個域,一個是資訊域,一個是指標域。也就是單向連結串列的節點被分成兩部分,一部分是儲存或顯示關於節點的資訊,第二部分儲存下一個節點的地址,而最後一個節點則指向一個空值。

優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈。

(雙向也不會死迴圈,迴圈連結串列忘了進行控制的話很容易進入死迴圈);缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是隻能前進。

雙向連結串列:每個節點有2個連結,一個是指向前一個節點(當此連結為第一個連結時,指向的是空值或空列表),另一個則指向後一個節點(當此連結為最後一個連結時,指向的是空值或空列表)。意思就是說雙向連結串列有2個指標,一個是指向前一個節點的指標,另一個則指向後一個節點的指標。

優點:可以找到前驅和後繼,可進可退;缺點:增加刪除節點複雜。

7樓:人才

單向連結串列:

優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈。(雙向也不會死迴圈,迴圈連結串列忘了進行控制的話很容易進入死迴圈)

缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是隻能前進。

雙向連結串列:

優點:可以找到前驅和後繼,可進可退。

缺點:增加刪除節點複雜(其實就複雜一點點)一般應用中單向連結串列或迴圈連結串列居多,雙向連結串列不常用。當然特殊條件下雙向連結串列很方便。尤其是需要查詢到某個節點後再查其前驅的工作中。

單連結串列和雙連結串列有什麼區別呢,一般什麼時候使用呢

8樓:

單連結串列只有一個指向下一結點的指標,也就是隻能next

雙連結串列除了有一個指向下一結點的指標外,還有一個指向前一結點的指標,可以通過prev()快速找到前一結點,顧名思義,單連結串列只能單向讀取

具體怎麼用還要看實際情況了,比如快餐店訂餐時就適合單連結串列,因為一般領餐後不需要叫上一個顧客;設計系統流程的時候就可以用雙連結串列,因為經常檢視前一流程和後一流程

c語言 單向連結串列如何排序,C語言 單向連結串列如何排序?

問明 void link order stu p head stu pb,pf,temp pf p head if p head null 連結串列為空printf needn t order.n return if p head next null 連結串列有1個節點 printf only on...

已知head指向帶頭結點的單向連結串列,連結串列中每個結點包含字元型資料域(data)和指標域(next)。請編寫函

千里 已知head指向一個帶頭結點的單向連結串列連結串列中每個結點包含字元型資料域data和指標域next。請編寫函式實現連結串列的逆置。 光之琉璃影之殤 include include typedef struct node node,pnode pnode create void void ou...

C語言連結串列問題,c語言連結串列問題

我不知道你用什麼編譯器,不同的編譯器可能結果不一樣。會提示段錯誤的可能是vc編譯器,建議你除錯下 while p1 p1 num 0 struct student next 這個分號你寫錯了,所以會造成字元錯誤,然後定義連結串列的儲存結構是要用typedef struct student的。在主函式...