c語言線性表和連結串列有什麼區別,C語言 線性表和連結串列有什麼區別

2021-06-30 23:19:01 字數 3065 閱讀 3227

1樓:吉祥二進位制

線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第一個和最後一個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。

因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。

順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組地址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組地址連續的儲存單元中。

連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:

一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標域。 相比於線性表順序結構,連結串列比較方便插入和刪除操作。

2樓:完顏秀榮樓丙

線性表一般以陣列形式實現,在記憶體中連續存放。

連結串列以連結串列的形式實現,在記憶體中可以不連續存放。

3樓:覃芙沃嬋

在有序表中插入資料後不用再排序了:

1、找到要該插入資料的位置,使得線性表仍然有序;

2、將第1步找到位置後面的資料統一往後移動一位,給要插入資料騰出位置;

3、插入資料。

下面我給的是用陣列實現的,資料都用簡單int:

void

insert(int

a,int

n,intx)

4樓:匿名使用者

線性表有兩種方式:

1.順序線性表 (也就是用陣列實現的,在記憶體中有順序排列,通過改變陣列大小實現)

2.連結串列 (不是用順序實現的,用指標實現,在記憶體中不連續)**不全也不知道上面是做什麼的,給你點提示吧elem是線性表的基地址

length是線性表的長度

線性表的包含:

基地址當前長度

總長度每個表都有初始長度,如果超過了這個長度,可以用函式將這個長度加長

順序表和連結串列有什麼區別??

5樓:乘心宜於初

1.基於儲存的考慮

順序表的儲存空間是靜態分配的,在程式執行之前必須明確規定它的儲存規模,也就是說事先對“maxsize”要有合適的設定,過大造成浪費,過小造成溢位。如果對線性表的長度或儲存規模難以估計時,不宜採用順序表;連結串列不用事先估計儲存規模,但連結串列的儲存密度較低(儲存密度是指一個結點中資料元素所佔的儲存單元和整個結點所佔的儲存單元之比)。

2.基於操作的考慮

在順序表中按序號訪問元素的時間效能為o(1),而連結串列中按序號訪問的時間效能是o(n),所以如果經常做的運算是按序號訪問資料元素,顯然順序表優於連結串列;而在順序表中做插入、刪除時需移動元素,當資料元素的資訊量較多且表較長時,這一點是不應忽視的;在連結串列中作插入、刪除,雖然也要找插入位置,但主要是比較操作,從這個角度考慮顯然連結串列較優。

3.基於開發的語言考慮

順序表容易實現,任何高階語言中都有陣列型別,連結串列的操作是基於指標的,有些語言不支援指標型別,並且相對指標來講順序表較簡單。

總之,兩種儲存結構各有長短,選擇那一種儲存方式應由實際問題決定。通常“較穩定”的線性表選擇順序儲存,而頻繁做插入刪除的即動態性較強的線性表宜選擇鏈式儲存。

#資料結構

6樓:時凌青揭靈

順序表儲存位置是連續的、支援隨機訪問,連結串列可以是不連續的、不能隨機訪問,只能從頭到尾逐個搜尋。

7樓:戈陽童曉楓

單連結串列就是一個節點鏈一個節點的那種

而順序表,通常採用動態陣列的形式。

區別就是記憶體上的區別。

連續與不連續。

操作上的區別,單連結串列在增刪上面有優勢,比順序表效率高。

順序表增刪還需要移動

順序表的優勢,可以通過下標直接索引到該元素,查詢快

8樓:

順序表儲存位置是連續的,一般順序表的長度有限,而連結串列是通過指標來定位下一個元素的位置,所以沒有長度的限制,隨時可以增加。不過連結串列操作起來不如順序表方便,順序表可以通過計算地址來定位需要的元素,連結串列只能從頭到尾來找需要的元素。

9樓:匿名使用者

兩個區別:

1.物理結構上:順序表在記憶體中是依順序存放的,中間沒有間隙;連結串列的元素存放的位置就是隨機的,亂序的.

2.邏輯結構上:順序表可以根據下標來隨機訪問,如a[3]就能訪問到第三個元素,而連結串列不管是單連結串列還是雙連結串列,都必須先訪問到第一個元素得到第二個元素的指標,再通過第二個元素得到第三個元素的指標,它是順序訪問的.

10樓:匿名使用者

順序表儲存位置是相鄰連續的,可以隨即訪問的一種資料結構,一個順序表在使用前必須指定起長度,一旦分配記憶體,則在使用中不可以動態的更改。他的優點是訪問資料是比較方便,可以隨即的訪問表中的任何一個資料。

連結串列是通過指標來描述元素關係的一種資料結構,他可以是實體地址不連續的物理空間。不能隨即訪問連結串列元素,必須從表頭開始,一步一步搜尋元素。它的優點是:

對於陣列,可以動態的改變資料的長度,分配物理空間。

在使用中:如果一個陣列在使用中,查詢比較多,而插入,刪除資料比較少,陣列的長度不變時,選順序表比較合理。如果插入,刪除,長度不定的陣列,可以選連結串列。

問下資料結構中的 線性表、順序表和連結串列之間的特點和區別... 求高手指點下...

11樓:帥得有點壞

線性表、包括順序表和連結串列

順序表裡面元素的地址是連續的,

連結串列裡面節點的地址不是連續的,是通過指標連起來的。

在c語言中,什麼是連結串列呀?

12樓:匿名使用者

呵呵 ls回答的太全面了 我簡單概括一下吧

簡單的說,連結串列就是一串儲存資料的鏈式結構。鏈式的優點在於,每個資料之間都是相關聯的,你如果拿掉其中一個資料,整個連結串列就斷了,需要重新把斷開的部分連上,就像一條鎖鏈一樣。而你要新增一個資料,也要先斷開一個鎖鏈,把資料加進去,再重新連上。

就是這麼簡單!

c語言線性表的實現中的頭插法和尾插法

頭插法建表 演算法 p listnode malloc sizeof listnode 生成新結點 p data ch 將讀入的資料放入新結點的專資料域中p next head head p 尾插法建表屬 演算法 p listnode malloc sizeof listnode 生成新結點 p d...

c跟c語言有什麼區別,請問c語言與c 有什麼區別

區別很多,簡單說下吧。都是高階程式語言,不過c是面向過程的語言,在結構模組化方面比較弱,可維護性和可擴充套件性相對較差 c 是物件導向語言,程式結構可實現模組化,便於維護和修改。其實兩種語言應用都很廣,不過c語言是基礎,包括c 在內的大多數高階語言都是從c衍生的,只是在某些方面降低程式設計難度,但是...

嵌入式C語言和通用C語言有什麼區別

語法上沒什麼 bai區別,就是普通du的c程式設計是在os之上,有很多zhi的標準庫函式可以調dao用內,分配的記憶體就是容pc機的記憶體,處理器就是pc的cpu。而嵌入式c程式設計的話會涉及到操作硬體,所以底層沒有庫函式呼叫,需要自己編寫操作硬體的函式,另外編譯的時候是用交叉編譯器,記憶體是晶元上...