更新時(shí)間:2022-05-17 10:01:55 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽992次
鏈表是包含一系列連接節(jié)點(diǎn)的線性數(shù)據(jù)結(jié)構(gòu)。在這里,每個(gè)節(jié)點(diǎn)存儲(chǔ)下一個(gè)節(jié)點(diǎn)的數(shù)據(jù)和地址。例如,
你必須從某個(gè)地方開(kāi)始,所以我們給第一個(gè)節(jié)點(diǎn)的地址一個(gè)特殊的名字,叫做頭. 此外,可以識(shí)別鏈表中的最后一個(gè)節(jié)點(diǎn),因?yàn)樗南乱徊糠种赶蚩罩?
鏈表可以有多種類型:?jiǎn)捂湵怼㈦p鏈表和循環(huán)鏈表。在本文中,我們將重點(diǎn)介紹單鏈表。要了解其他類型,請(qǐng)?jiān)L問(wèn)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
讓我們看看鏈表的每個(gè)節(jié)點(diǎn)是如何表示的。每個(gè)節(jié)點(diǎn)包括:
一個(gè)數(shù)據(jù)項(xiàng)
另一個(gè)節(jié)點(diǎn)的地址
我們將數(shù)據(jù)項(xiàng)和下一個(gè)節(jié)點(diǎn)引用包裝在一個(gè)結(jié)構(gòu)中,如下所示:
struct node
{
int data;
struct node *next;
};
了解鏈表節(jié)點(diǎn)的結(jié)構(gòu)是掌握它的關(guān)鍵。
每個(gè)結(jié)構(gòu)節(jié)點(diǎn)都有一個(gè)數(shù)據(jù)項(xiàng)和一個(gè)指向另一個(gè)結(jié)構(gòu)節(jié)點(diǎn)的指針。讓我們創(chuàng)建一個(gè)包含三個(gè)項(xiàng)目的簡(jiǎn)單鏈接列表,以了解其工作原理。
/* Initialize nodes */
struct node *head;
struct node *one = NULL;
struct node *two = NULL;
struct node *three = NULL;
/* Allocate memory */
one = malloc(sizeof(struct node));
two = malloc(sizeof(struct node));
three = malloc(sizeof(struct node));
/* Assign data values */
one->data = 1;
two->data = 2;
three->data=3;
/* Connect nodes */
one->next = two;
two->next = three;
three->next = NULL;
/* Save address of first node in head */
head = one;
如果你不理解上面的任何一行,你只需要復(fù)習(xí)一下指針和結(jié)構(gòu)。
只需幾個(gè)步驟,我們就創(chuàng)建了一個(gè)包含三個(gè)節(jié)點(diǎn)的簡(jiǎn)單鏈表。
鏈表的力量來(lái)自于打破鏈并重新加入它的能力。例如,如果您想將元素 4 放在 1 和 2 之間,則步驟如下:
創(chuàng)建一個(gè)新的結(jié)構(gòu)節(jié)點(diǎn)并為其分配內(nèi)存。
將其數(shù)據(jù)值添加為 4
將其 next 指針指向包含 2 作為數(shù)據(jù)值的結(jié)構(gòu)節(jié)點(diǎn)
將“1”的next指針更改為我們剛剛創(chuàng)建的節(jié)點(diǎn)。
在數(shù)組中做類似的事情需要移動(dòng)所有后續(xù)元素的位置。
// Linked list implementation in Java
class LinkedList {
// Creating a node
Node head;
static class Node {
int value;
Node next;
Node(int d) {
value = d;
next = null;
}
}
public static void main(String[] args) {
LinkedList linkedList = new LinkedList();
// Assign value values
linkedList.head = new Node(1);
Node second = new Node(2);
Node third = new Node(3);
// Connect nodess
linkedList.head.next = second;
second.next = third;
// printing node-value
while (linkedList.head != null) {
System.out.print(linkedList.head.value + " ");
linkedList.head = linkedList.head.next;
}
}
}
以上就是關(guān)于“數(shù)據(jù)結(jié)構(gòu)鏈表的介紹”,大家如果想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒(méi)有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743