當前位置:首頁 » 編程語言 » c語言鏈表與順序表的差別
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言鏈表與順序表的差別

發布時間: 2022-05-08 14:36:16

1. c語言中鏈表與隊列有什麼區別

C語言的鏈表與隊列是兩種不同的概念:

鏈表是一種數據的存儲方式,其保存的數據在內存中是不連續的,採用指針對數據進行訪問
隊列是一種數據結構,其特點是先進先出,後進後出;

隊列的存儲方式可以使用線性表進行存儲,也可以使用鏈表進行存儲。

SQQUEUE的第一個元素elemtype
*elem;其實是指向了一個數組,該數組中存儲著類型為elemtype的元素,然後front和rear就標識了隊首和隊尾元素對應的數組下標。

typedef
struct _Point{
int x,y;
}Point;
#defineelemtype
Point//這個elemtype可以是任意你自己定義的結構,可以是結構體,也可以是簡單數據類型
elemtype
array[10]={0};//這個是隊列的數據結構,在這里是一個Point數組
SQQUEUE
queue={0};
queue.elem=array;//這樣array中的元素就是queue中的元素了。
queue.front=queue.rear=queue.size=0;


2. C語言數據結構線性表和鏈表的區別

線性表一般以數組形式實現,在內存中連續存放。
鏈表以鏈表的形式實現,在內存中可以不連續存放。

3. 數據結構中,順序表和C語言數組的區別是什麼

他們答得我個人覺得是不正確的,因為剛好在學,順序表是指在計算機內存中連續的線性表,既有邏輯結構,也有存儲結構;而數組屬於有序表,單指邏輯結構。也就是說數組的實現最終是順序表。

4. C語言 線性表和鏈表有什麼區別

線性表有兩種方式:
1.順序線性表
(也就是用數組實現的,在內存中有順序排列,通過改變數組大小實現)
2.鏈表
(不是用順序實現的,用指針實現,在內存中不連續)
代碼不全也不知道上面是做什麼的,給你點提示吧
elem是線性表的基地址
length是線性表的長度
線性表的包含:
基地址
當前長度
總長度
每個表都有初始長度,如果超過了這個長度,可以用函數將這個長度加長

5. C語言中,雙鏈表、單鏈表、順序表有什麼區別分別有什麼用途簡單來說,就是這三個表分別適用於什麼情

鏈表是通過指針連接的表吧 就是在內存中不是連續的 單鏈表每一個節點包含一個數據和一個指向下一個節點的指針 雙鏈表比單鏈表多一個指向上一個節點的指針 就是說單鏈表只能沿著一個方向走 雙鏈表可以沿任意方向走 順序表應該是在內存中順序存儲的表吧

6. C語言關於鏈表與順序表的結構問題,靜態順序表與靜態鏈表的區別是什麼

靜態鏈表是用數組實現的,是順序的存儲結構,在物理地址上是連續的,而且需要預先分配大小。動態鏈表是用申請內存函數(C是malloc,C++是new)動態申請內存的,所以在鏈表的長度上沒有限制。動態鏈表因為是動態申請內存的,所以每個節點的物理地址不連續,要通過指針來順序訪問。靜態鏈表在插入、刪除時也是通過修改指針域來實現的,與動態鏈表沒有什麼分別(動態鏈表還需要刪除內存)。。不知道我的回答是不是解決了你的問題,希望可以幫到你。 (其實用鏈表一般都是動態鏈表或者結構數組)

7. 在C語言中數組和鏈表有什麼區別

要說這個區別,你要先知道數據結構。要說清楚數據結構要一本書的內容,所以我只能抽個直接相關的東東來說一下:線性表。
線性表:
邏輯上 是一張二維表,裡面有元素和相應元素的位置。
物理上 線性表以兩種形式在內存中存放:順序表和鏈式表。
這順序表要求:在內存中連續的內存地址存放。(可看成數組)
而鏈式表不要求以連續的內存塊平存放,它有一個指針域來索引到下一個節點。(鏈表)

性能上分析:
順序表(數組)可直接索引到某個元素,而鏈表只能從鏈表頭(如果為單鏈表)開始一個一個去找,所以比順序表要低效。
另外一方面,如果順序表要刪除或插入元素就要移動多個後面的元素,而鏈表則不用移動元素,只要修改指針域就行了,所以在有刪除或修改動作時,鏈表比較高效。

當然我說的還很不全面,你可以參考一下數據結構這本書的線性表這章。

8. 請問順序鏈表和數組有什麼區別另外求一個c語言動態數組的常式,最好是有注釋的,謝謝

這里的Define是讓你學會創建順序表的方法。你學會創建用define定義的長度的順序表之後,對於動態數組就可以實現了。 這個是可以改變的。用下面的程序給你實現下。 講的是,你要輸入多少個數字。 如果用單純的數據。你最開始的時候定義了數字長度為100,那麼你在運行程序的時候,輸入的數據最多就100個,再多就不行了。會越界。然而你用動態數組就可以,你要輸入多少,數組的長度就多少了。 這就是動態數據了。 /*wintc編譯器 若用c++ 去掉 getch()*/ #include <stdio.h> #include<stdlib.h> #include<alloc.h> int main() { int *arr=NULL; int i,n,t; scanf("%d",&n);/*你要輸入多少個數據 */ arr=(int*)malloc(sizeof(int)*n); if(!arr)exit(0); for(i=0;i<n;i++) { scanf("%d",&arr[i]); } for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("current the array length is %d\n",n); free(arr); getch(); return 0; }