c语言链表添加结点
时间: 2023-07-02 15:09:32 浏览: 42
链表是一种常用的数据结构,可以用来存储和管理一组数据。下面是一个简单的例子,演示如何使用 C 语言创建一个链表,并添加新节点。
首先,我们需要定义一个结构体来表示链表中的节点:
```c
struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
};
```
然后,我们可以编写一个函数来添加新节点:
```c
void addNode(struct Node** head, int data) {
// 创建新节点
struct Node* newNode = (struct Node*) malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
// 如果链表为空,将新节点作为头节点
if (*head == NULL) {
*head = newNode;
return;
}
// 找到链表末尾,将新节点插入
struct Node* curr = *head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
```
这个函数接受两个参数:链表的头指针和要添加的数据。它首先创建一个新节点,然后检查链表是否为空。如果链表为空,将新节点作为头节点;否则,遍历链表,找到末尾节点,并将新节点插入到末尾节点的后面。
下面是一个完整的例子,演示如何使用这个函数来创建和打印一个简单的链表:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
};
void addNode(struct Node** head, int data) {
// 创建新节点
struct Node* newNode = (struct Node*) malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
// 如果链表为空,将新节点作为头节点
if (*head == NULL) {
*head = newNode;
return;
}
// 找到链表末尾,将新节点插入
struct Node* curr = *head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
void printList(struct Node* head) {
struct Node* curr = head;
while (curr != NULL) {
printf("%d ", curr->data);
curr = curr->next;
}
printf("\n");
}
int main() {
struct Node* head = NULL;
addNode(&head, 1);
addNode(&head, 2);
addNode(&head, 3);
printList(head);
return 0;
}
```
这个程序首先创建一个空链表,然后调用 `addNode` 函数三次,将数据 1、2、3 依次添加到链表中。最后,调用 `printList` 函数打印链表中的所有数据。运行结果应该是:
```
1 2 3
```