鏈表是什麼?

General 更新 2024-12-26

鏈表是什麼!那個編程語言中有的,和數組有什麼區別

鏈表

鏈表概述

鏈表是一種常見的重要的數據結構。它是動態地進行存儲分配的一種結構。它可以根據需要開闢內存單元。鏈表有一個“頭指針”變量,以head表示,它存放一個地址。該地址指向一個元素。鏈表中每一個元素稱為“結點”,每個結點都應包括兩個部分:一為用戶需要用的實際數據,二為下一個結點的地址。因此,head指向第一個元素:第一個元素又指向第二個元素;……,直到最後一個元素,該元素不再指向其它元素,它稱為“表尾”,它的地址部分放一個“NULL”(表示“空地址”),鏈表到此結束。

單向鏈表

單向鏈表的每個結點中除信息域以外還有一個指針域,用來指出其後續結點,單向鏈表的最後一個結點的指針域為空(NULL)。單向鏈暢由頭指針唯一確定,因此單向鏈表可以用頭指針的名字來命名,例如頭指針名為head的單向鏈表稱為表head,頭指針指向單向鏈表的第一個結點。在用C語言實現時,首先說明一個結構類型,在這個結構類型中包含一個(或多個)信息成員以及一個指針成員:

#define NULL 0

typedef int DATATYPE

typedef struct node

{DATATYPE info;

node *next;

}LINKLIST;

鏈表結構中包含指針型的結構成員,類型為指向相同結構類型的指針。根據C語

言的語法要求,結構的成員不能是結構自身類型,即結構不能自己定義自己,因為這樣將導致一個無窮的遞歸定義,但結構的成員可以是結構自身的指針類型,通過指針引用自身這種類型的結構。

鏈表的每個結點是lINKIST結構類型的一個變量。例如定義了個鏈表的頭指針head

和兩個指向鏈表結點的指針p,q:

LINKLIST *head,*P,*q;

根據結構成員的引用方法,當p和q分別指向了鏈表的確定結點後,P->info和p->next分別是某個結點的信息分量和指針分量,LINKLIST結構的信息分量是整型,可以用常規的方法對這兩個結點的信息分量分別賦值:

。。。。。。。

參考資料:myweb.yzu.edu.cn/...ao.htm

在C語言中,什麼是鏈表呀?

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

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

鏈表是什麼東西

鏈表是一種有序的列表,鏈表的內容通常是存儲與內存中分散的位置上。

鏈表的方式有兩種1:一種是利用數組結構串連的有序列表。

例如;兩個數組,一個存放數據,另一個存放連接的關係。這種缺乏彈性。

2:以動態內存配置的鏈表,(通常指的鏈表是一動態內存分配的鏈表)動態內存配置的鏈表,

是由許許多多的(node)所鏈接而成的,每一個結點,包含了數據部分和指向下一個結點的指針(Pointer)。

以動態內存配置的鏈表,在插入和刪除元素的時候,只需要將指針改變指向就可以。

鏈表和數組一樣是一種數據結構,如何使用完全基於你的應用需求。

鏈表和C++語言本身沒有任何聯繫。很多語言都可以實現鏈表數據結構。

我講一下數據和鏈表的區別有可能幫助你對鏈表的使用有個感覺。

數組是將元素在內存中連續存放,由於每個元素佔用內存相同,所以你可以通過下標迅速訪問數組中任何元素。但是如果你要在數組中增加一個元素,你需要移動大量元素,在內存中空出一個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果你想刪除一個元素,你同樣需要移動大量元素去填掉被移動的元素。

鏈表恰好相反,鏈表中的元素在內存中不是順序存儲的,而是通過存在元素中的指針聯繫到一起。比如:上一個元素有個指針指到下一個元素,以此類推,直到最後一個元素。如果你要訪問鏈表中一個元素,你需要從第一個元素開始,一直找到你需要的元素位置。但是增加和刪除一個元素對於鏈表數據結構就非常簡單了, 只要修改元素中的指針就可以了。

從上面的比較你可以看出,如果你的應用需要快速訪問數據,很少或不插入和刪除元素,你就應該用數組;相反, 如果你的應用需要經常插入和刪除元素你就需要用鏈表數據結構了。然後你自己可以想一想什麼樣的應用用鏈表合適。

另外,建議你找一本好一點的關於數據結構的書,裡面應該關於鏈表和其上算法的詳細介紹。鏈表本身是一個複雜的數據結構,而且包括很多種類,比如單向鏈表,雙向鏈表,樹,圖等,不是一篇文章可以介紹得清楚的。

鏈表的介紹

鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。 相比於線性表順序結構,操作複雜。由於不必須按順序存儲,鏈表在插入的時候可以達到O(1)的複雜度,比另一種線性表順序錶快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而線性表和順序表相應的時間複雜度分別是O(logn)和O(1)。使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由於增加了結點的指針域,空間開銷比較大。鏈表最明顯的好處就是,常規數組排列關聯項目的方式可能不同於這些數據項目在記憶體或磁盤上順序,數據的存取往往要在不同的排列順序中轉換。鏈表允許插入和移除表上任意位置上的節點,但是不允許隨機存取。鏈表有很多種不同的類型:單向鏈表,雙向鏈表以及循環鏈表。鏈表可以在多種編程語言中實現。像Lisp和Scheme這樣的語言的內建數據類型中就包含了鏈表的存取和操作。程序語言或面嚮對象語言,如C,C++和Java依靠易變工具來生成鏈表。

c語言中的鏈表是什麼?

就是一連續內存空間,類似於數組,不過數組的內存空間一旦初始化就是不變的。

鏈表開始是一個“頭指針”,定義了鏈表開始的位置,下面是像鏈條一樣的一串節點,每個節點包含數據部分和搐針部分。前一節點的指針指向後一節點,最後一個節點是數據和空地址,表示結束。

好處在於空間是動態分配的,需要多長可以一直鏈下去。

java裡的鏈表指的是什麼?為什麼需要鏈表?

java中的集合類有很多種,每個都有自己的一些特點,推薦你專門在這方面研究一下,比方Vector,ArrayList,,LinkedList,Hashtable等,

其中你問到的鏈表,是不是指LinkedList呢?

LinkedList是集合類的一種,和其它集合類一樣都用於存放未知內容和未知長度的數據或者說對象.

由於LinkedList的內部實現是採用鏈表結構,所以它就取名為LinkedList

當然ArrayList的內部實現是採用數組結構,所以它就取名為ArrayList,呵呵,很好理解吧.

它們就相當於一個容器,跟數據一樣,可以存放數據,但數組你必須在一開始就指定它裡面的內容是什麼類型的,比方你必須 int[] array;

而集合類就沒有必要,只需要: Vector vector=new Vector();就可以,

至於放裡面存放數據就更簡單了,它什麼都可以放,只要是對象:

String str="hello";

vector.add(str);

Integer i=10;

vector.add(i);

取數據的時候需要做類型強制轉換,因為你放的時候沒有強制指定類型:

String str=(String)vector.get(0);

String i=(Integer)vecotr.get(1);

其它幾種集合類也和vector埂用法接近,但有些會有些變化和特點, 集合類是java語言的一個重點學習項目,一定要深入瞭解,不要光從百度上搜,一定要自己多看書,多做實例. < >中有專門的一章重點講解集合類

誰告訴我c++裡的鏈表是什麼東西啊?

鏈表是一種有序的列表,鏈表的內容通常是存儲與內存中分散的位置上。

鏈表的方式有兩種1:一種是利用數組結構串連的有序列表。

例如;兩個數組,一個存放數據,另一個存放連接的關係。這種缺乏彈性。

2:以動態內存配置的鏈表,(通常指的鏈表是一動態內存分配的鏈表)動態內存配置的鏈表,

是由許許多多的(node)所鏈接而成的,每一個結點,包含了數據部分和指向下一個結點的指針(Pointer)。

以動態內存配置的鏈表,在插入和刪除元素的時候,只需要將指針改變指向就可以。

鏈表和數組一樣是一種數據結構,如何使用完全基於你的應用需求。

鏈表和C++語言本身沒有任何聯繫。很多語言都可以實現鏈表數據結構。

我講一下數據和鏈表的區別有可能幫助你對鏈表的使用有個感覺。

數組是將元素在內存中連續存放,由於每個元素佔用內存相同,所以你可以通過下標迅速訪問數組中任何元素。但是如果你要在數組中增加一個元素,你需要移動大量元素,在內存中空出一個閥素的空間,然後將要增加的元素放在其中。同樣的道理,如果你想刪除一個元素,你同樣需要移動大量元素去填掉被移動的元素。

鏈表恰好相反,鏈表中的元素在內存中不是順序存儲的,而是通過存在元素中的指針聯繫到一起。比如:上一個元素有個指針指到下一個元素,以此類推,直到最後一個元素。如果你要訪問鏈表中一個元素,你需要從第一個元素開始,一直找到你需要的元素位置。但是增加和刪除一個元素對於鏈表數據結構就非常簡單了, 只要修改元素中的指針就可以了。

從上面的比較你可以看出,如果你的應用需要快速訪問數據,很少或不插入和刪除元素,你就應該用數組;相反, 如果你的應用需要經常插入和刪除元素你就需要用鏈表數據結構了。然後你自己可以想一想什麼樣的應用用鏈表合適。

另外,建議你找一本好一點的關於數據結構的書,裡面應該關於鏈表和其上算法的詳細介紹。鏈表本身是一個複雜的數據結構,而且包括很多種類,比如單向鏈表,雙向鏈表,樹,圖等,不是一篇文章可以介紹得清楚的。

參考資料:給分吧,不要反悔啊。

列表與鏈表有什麼區別

列表,不清楚。應該說的是表。

表在數據結構中,是表示一種線性關係的數據結構。

鏈表,應該是鏈接表 是 表的一種存儲結構。

表從存儲結構上分為 順序表和鏈接表。

順序表是指在內存中連續存儲的數據存儲空間,數組。可以用下標訪問每一個單元。

鏈接表是指在內存中不是連續存儲而是由指針鏈連接各個單元的線性存儲空間。

請問C++中的鏈表是什麼 新手

貌似和C中並沒有什麼區別,當然比如VC中可能有一些為你封裝的比較好的鏈表類或者其他線性數據結構類,比如CList、CArray之類的,但是可能被用的不多,一般還是自己寫,和C裡面一樣。

不同當然還是有的,C中只能為節點malloc一個地址空間,在刪除節點後用free來釋放空間。

C++中直接一個new搞定了,例子如下:

還是用typedef

typedef struct Node

{

int Data; //節點數據

Node* next; // next指針

Node() //構造函數

{

Data=0;

next=NULL;

}

~Node() //加了~你懂的

{

}

}NodeforReal;

對於這樣一個節點Node *s;

s=(Node*) new (Node); 這是開闢了一塊空間而s指向這個節點,同時new已經調用了構造函數,也就是說現在s->Data=0, s->next=NULL;

對於new出來的節點不能用free來釋放指針指向的空間, 必須用delete, 同樣的每次delete以後要把現在可能指向這個剛被刪除的所有指針變量設為NULL,這和C裡面是一樣的,因為delete空指針時合法的,但是delete野指針可能造成意想不到的後果

c語言 鏈表是什麼,有什麼用,它的基本結構是什麼

c語言 鏈表是什麼,有什麼用,它的基本結構是什麼

表不屬於C語言,它是一種數據結構,在C語言中用結構體來表示鏈表的結點,這個結構體中包含有數據域和指向自身的指針。

可用於實現隊列、堆棧等其它數據結構,以及動態存儲等

匿名 ??6-14 20:46

其他答案其他答案

相關問題答案
鏈表是什麼?
數據庫鎖表是什麼意思?
備案表是什麼?
雞兒老表是什麼意思?
表是什麼偏旁部首?
配料表是什麼?
年輕的外表是什麼意思?
考勤報表是什麼意思?
出師表是什麼時候寫的?
郵件列表是什麼?