如何建立一个单链表linklist
时间: 2023-09-16 13:01:52 浏览: 57
要建立一个单链表(linklist),首先需要定义一个节点结构体,该结构体包含一个数据域和一个指向下一个节点的指针域。
例如:
```
struct Node {
int data; // 数据域
struct Node* next; // 指针域
};
```
接下来,可以使用该节点结构体来创建链表。
步骤如下:
1. 定义一个头节点,并将其指针域指向空。
2. 定义一个指向当前节点的指针cur,并将cur指向头节点。
3. 通过循环依次创建链表的节点,并将cur的指针域指向新建节点。
4. 当所有节点都创建完毕后,最后一个节点的指针域应该指向空。
5. 链表建立完成后,可以通过遍历链表的方式访问其中的节点。
例如,我们要创建一个包含5个节点的链表:
```cpp
struct Node {
int data;
struct Node* next;
};
int main() {
// 定义头节点
struct Node* head = NULL;
// 定义当前节点指针
struct Node* cur = NULL;
// 创建第一个节点
struct Node* node1 = (struct Node*)malloc(sizeof(struct Node));
node1->data = 1;
node1->next = NULL;
// 将头节点指向第一个节点
head = node1;
cur = node1;
// 创建剩余的节点
for (int i = 2; i <= 5; i++) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = i;
newNode->next = NULL;
// 将当前节点的指针域指向新节点
cur->next = newNode;
// 移动当前节点指针
cur = newNode;
}
// 遍历链表并输出节点值
cur = head;
while (cur != NULL) {
printf("%d ", cur->data);
cur = cur->next;
}
// 释放链表的内存空间
cur = head;
while (cur != NULL) {
struct Node* temp = cur;
cur = cur->next;
free(temp);
}
return 0;
}
```
以上代码中,通过循环创建了包含5个节点的链表,并遍历输出了链表中的节点值。最后,通过循环释放链表的内存空间,防止内存泄漏。