//一个链表节点
struct Node {
int data;
struct Node* next;
};
2.C++
class Node {
public:
int data;
Node* next;
};
3.Java
class LinkedList {
Node head; // head of the list
/* 链表节点*/
class Node {
int data;
Node next;
// 创建新节点的构造函数
// next 默认初始化为 null
Node(int d) { data = d; }
}
}
4.Python
class Node:
# 初始化节点对象的函数
def __init__(self, data):
self.data = data # 分配数据
self.next = None # 将 next 初始化为 null
class LinkedList:
# 初始化链表对象的函数
def __init__(self):
self.head = None
5.C#
class LinkedList {
// 链表的第一个节点(head)
// 将是 Node 类型的对象(默认为 null)
Node head;
class Node {
int data;
Node next;
// 创建新节点的构造函数
Node(int d) { data = d; }
}
}
让我们创建一个具有 3 个节点的简单链表。
// 一个示例 C++ 程序来介绍
// 一个链表
#include <bits/stdc++.h>
using namespace std;
class Node {
public:
int data;
Node* next;
};
// 程序创建一个简单的链接
// 包含 3 个节点的列表
int main()
{
Node* head = NULL;
Node* second = NULL;
Node* third = NULL;
// 在堆中分配 3 个节点
head = new Node();
second = new Node();
third = new Node();
/* 三个块已被动态分配。
我们有指向这三个块的指针作为头部,
第二个和第三个
head second third
| | |
| | |
+---+-----+ +----+----+ +----+----+
| # | # | | # | # | | # | # |
+---+-----+ +----+----+ +----+----+
# 代表任何随机值。
数据是随机的,因为我们没有分配
什么都还没有 */
head->data = 1; // 在第一个节点分配数据
head->next = second; // 将第一个节点与
// 第二个节点
/* 数据已分配到第一个的数据部分
块(头部指向的块)。 接下来
第一个块的指针指向第二个。
所以他们两个是有联系的。
head second third
| | |
| | |
+---+---+ +----+----+ +-----+----+
| 1 | o----->| # | # | | # | # |
+---+---+ +----+----+ +-----+----+
*/
// 将数据分配给第二个节点
second->data = 2;
// 将第二个节点与第三个节点连接起来
second->next = third;
/* 数据已经分配到第二个数据部分
块(由秒指向的块)。 接下来
第二个块的指针指向第三个
堵塞。 所以所有三个块都是链接的。
head second third
| | |
| | |
+---+---+ +---+---+ +----+----+
| 1 | o----->| 2 | o-----> | # | # |
+---+---+ +---+---+ +----+----+ */
third->data = 3; // 将数据分配给第三个节点
third->next = NULL;
/* 数据已分配到第三个数据部分
块(由第三个指向的块)。 和下一个指针
第三块的 NULL 表示
链表在这里终止。
我们已经准备好了链表。
head
|
|
+---+---+ +---+---+ +----+------+
| 1 | o----->| 2 | o-----> | 3 | NULL |
+---+---+ +---+---+ +----+------+
请注意,只有头部足以表示
整个列表。 我们可以遍历完整的
按照下一个指针列出。*/
return 0;
}