1樓:匿名使用者
線性表是鏈式儲存結構,用連結串列實現,使用空間多,且合理。而順序表基本上是用陣列實現的,使用空間有限,會造成浪費。
2樓:匿名使用者
順序表 靜態分配。程式執行之前必須明確規定儲存規模。
隨機存取結構,主要是進行查詢,很少做插入和刪除操作時順序表。
線性表 動態分配。只要記憶體空間尚有空閒,就不會產生溢位。
從頭指標起順著掃描才能取得。
3樓:匿名使用者
線性表僅僅是邏輯上的定義而已,即具有相同特性資料元素的有限序列,(比如一個字元陣列或者一個整型陣列 再或者連結串列 )並不是說,線性表就一定是連結串列或者順序表(連結串列和順序表都滿足線性表的定義,只是實現方式不一樣,順序表採用順序儲存方式,記憶體中開闢的地址是連續的,而連結串列採用鏈式儲存的方式,地址是可以不連續的)兩者儲存方式各有優缺點,看情況而定。
下面是資料結構中對於線性表的一段定義與操作
****線性表--順序表的定義與操作示例
#include
#include
#include
#define maxsize 20 /* 儲存空間初始分配量 */
typedef int elemtype; /* elemtype型別根據實際情況而定,這裡假設為int */
typedef struct
sqlist;
//順序表的初始化
sqlist init()
//順序表的建立
sqlist create(sqlist l)
return l;
}/* 初始條件:順序線性表l已存在,1≤i≤listlength(l) */
/* 操作結果:用e返回l中第i個資料元素的值,注意i是指位置,第1個位置的陣列是從0開始 */
elemtype getelem(sqlist l,int i)
else
return l.data[i-1];
}//順序表的插入
sqlist sqlistinsert(sqlist l, int i, elemtype x)
sqlist sqlistdelete(sqlist l,int i)
int main()
printf("\n1.檢視順序表 \n2.查詢 \n3.插入 \n4.刪除 \n0.退出 \n請選擇你的操作:\n");
while(opp != '0')
printf("\n");
break;
case '2':
printf("\n進入查詢功能,請問需要查詢第幾個元素:");
scanf("%d",&find);
printf("%d",find);
found = getelem(nmlist, find);
printf("第%d個值為%d ", find, found);
printf("\n");
break;
case '3':
printf("進入插入功能,請輸入插入元素位置:");
scanf("%d",&pos);
printf("請輸入插入元素的值:");
scanf("%d",&value);
nmlist = sqlistinsert(nmlist,pos,value);
printf("\n插入元素後順序表為:");
for(i=0; i < nmlist.length; i++)
printf("\n");
break;
case '4':
printf("進入刪除功能,請輸入刪除元素位置:");
scanf("%d",&pos);
nmlist = sqlistdelete(nmlist,pos);
printf("\n刪除元素後順序表為:");
for(i=0; i < nmlist.length; i++)
printf("\n");
break;
case '0':
exit(0);}}}
問下資料結構中的 線性表、順序表和連結串列之間的特點和區別... 求高手指點下...
4樓:帥得有點壞
線性表、包括順序表和連結串列
順序表裡面元素的地址是連續的,
連結串列裡面節點的地址不是連續的,是通過指標連起來的。
c語言中的線性表、順序表和連結串列到底是什麼關係?
5樓:
這個要看資料結構的書籍。
線性表是一類adt,指的是除了頭尾,每一項都有前驅後繼項。
順序表使用陣列實現這個;連結串列使用指標實現這個,分單連結串列(每一項只有指向下一個的指標)、雙連結串列(每一項有指向上一個下一個兩個指標)。
*************************==線性表定義了一種資料結構,從邏輯上定義了各項之間的關係。
順序表和連結串列通過兩種不同的儲存方式實現了這種資料結構。
順序表使用陣列實現,在記憶體中是連續的,陣列放滿時,需要手動重新分配或者乾脆報錯。
連結串列使用指標實現,在記憶體中可以不連續,而且長度只受記憶體大小限制。
順序表和連結串列有什麼區別??
6樓:乘心宜於初
1.基於儲存的考慮
順序表的儲存空間是靜態分配的,在程式執行之前必須明確規定它的儲存規模,也就是說事先對“maxsize”要有合適的設定,過大造成浪費,過小造成溢位。如果對線性表的長度或儲存規模難以估計時,不宜採用順序表;連結串列不用事先估計儲存規模,但連結串列的儲存密度較低(儲存密度是指一個結點中資料元素所佔的儲存單元和整個結點所佔的儲存單元之比)。
2.基於操作的考慮
在順序表中按序號訪問元素的時間效能為o(1),而連結串列中按序號訪問的時間效能是o(n),所以如果經常做的運算是按序號訪問資料元素,顯然順序表優於連結串列;而在順序表中做插入、刪除時需移動元素,當資料元素的資訊量較多且表較長時,這一點是不應忽視的;在連結串列中作插入、刪除,雖然也要找插入位置,但主要是比較操作,從這個角度考慮顯然連結串列較優。
3.基於開發的語言考慮
順序表容易實現,任何高階語言中都有陣列型別,連結串列的操作是基於指標的,有些語言不支援指標型別,並且相對指標來講順序表較簡單。
總之,兩種儲存結構各有長短,選擇那一種儲存方式應由實際問題決定。通常“較穩定”的線性表選擇順序儲存,而頻繁做插入刪除的即動態性較強的線性表宜選擇鏈式儲存。
#資料結構
7樓:時凌青揭靈
順序表儲存位置是連續的、支援隨機訪問,連結串列可以是不連續的、不能隨機訪問,只能從頭到尾逐個搜尋。
8樓:戈陽童曉楓
單連結串列就是一個節點鏈一個節點的那種
而順序表,通常採用動態陣列的形式。
區別就是記憶體上的區別。
連續與不連續。
操作上的區別,單連結串列在增刪上面有優勢,比順序表效率高。
順序表增刪還需要移動
順序表的優勢,可以通過下標直接索引到該元素,查詢快
9樓:
順序表儲存位置是連續的,一般順序表的長度有限,而連結串列是通過指標來定位下一個元素的位置,所以沒有長度的限制,隨時可以增加。不過連結串列操作起來不如順序表方便,順序表可以通過計算地址來定位需要的元素,連結串列只能從頭到尾來找需要的元素。
10樓:匿名使用者
兩個區別:
1.物理結構上:順序表在記憶體中是依順序存放的,中間沒有間隙;連結串列的元素存放的位置就是隨機的,亂序的.
2.邏輯結構上:順序表可以根據下標來隨機訪問,如a[3]就能訪問到第三個元素,而連結串列不管是單連結串列還是雙連結串列,都必須先訪問到第一個元素得到第二個元素的指標,再通過第二個元素得到第三個元素的指標,它是順序訪問的.
11樓:匿名使用者
順序表儲存位置是相鄰連續的,可以隨即訪問的一種資料結構,一個順序表在使用前必須指定起長度,一旦分配記憶體,則在使用中不可以動態的更改。他的優點是訪問資料是比較方便,可以隨即的訪問表中的任何一個資料。
連結串列是通過指標來描述元素關係的一種資料結構,他可以是實體地址不連續的物理空間。不能隨即訪問連結串列元素,必須從表頭開始,一步一步搜尋元素。它的優點是:
對於陣列,可以動態的改變資料的長度,分配物理空間。
在使用中:如果一個陣列在使用中,查詢比較多,而插入,刪除資料比較少,陣列的長度不變時,選順序表比較合理。如果插入,刪除,長度不定的陣列,可以選連結串列。
c語言線性表和連結串列有什麼區別,C語言 線性表和連結串列有什麼區別
吉祥二進位制 線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第一個和最後一個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。順序表是在計算機記憶體中以陣列...
如何用c語言編合併兩個順序線性表的程式
1 一開始的思路 把a b都丟進c裡,然後對c排序。人們一開始想到的總是最懶的辦法,往往是最沒效率的。改進 由於a b是排好序的,先把a丟進c裡,再拿b元素一個個往裡查詢插入。這麼做要頻繁移動元素,如果線性表不是連結串列的話,開銷很大。再改進 從a b中各拿一個元素出來,比較後把小的放進c裡,再從剛...
線性表的操作
1.分解第二個線性表,按照大小進行插入操作2.先不管大小接合再排序 當然如果單連結串列的形式是建議插入的,因為排序的操作比插入多的多可以設一臨時變數p指向2線性表的尾端 逐個插入1號表,注意判斷插入的位置是否頭尾,需要做特殊處理 linkedlistlist1 new linkedlist link...