单链表的创建及遍历C语言
时间: 2023-12-12 14:04:21 浏览: 42
单链表是一种常见的数据结构,它由一个个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。单链表的创建和遍历可以使用C语言实现。
创建单链表的步骤:
1. 定义链表节点的数据结构,包括数据元素和指向下一个节点的指针。
2. 定义头节点,并初始化为空。
3. 循环读入数据,创建新节点,将数据存储到新节点中,将新节点插入到链表的末尾。
4. 返回头节点。
下面是C语言实现的代码:
```
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data; // 数据元素
struct ListNode* next; // 下一个节点指针
} ListNode;
// 创建单链表函数
ListNode* createList() {
ListNode* head = NULL; // 定义头节点并初始化为空
ListNode* tail = NULL; // 定义尾节点并初始化为空
int data;
printf("请输入数据(输入-1结束):\n");
scanf("%d", &data);
while (data != -1) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); // 创建新节点
newNode->data = data; // 存储数据
newNode->next = NULL; // 新节点的下一个节点指针指向空
if (head == NULL) { // 如果头节点为空,说明链表还没有节点
head = newNode; // 将头节点指向新节点
tail = newNode; // 将尾节点也指向新节点
} else {
tail->next = newNode; // 将新节点连接到链表末尾
tail = newNode; // 更新尾节点
}
scanf("%d", &data); // 继续读入数据
}
return head; // 返回头节点
}
// 遍历单链表函数
void traverseList(ListNode* head) {
printf("链表数据:\n");
ListNode* p = head; // 定义指针p指向头节点
while (p != NULL) { // 循环遍历链表
printf("%d ", p->data); // 输出节点数据
p = p->next; // 将指针p指向下一个节点
}
printf("\n");
}
int main() {
ListNode* head = createList(); // 创建单链表
traverseList(head); // 遍历单链表
return 0;
}
```
在上面的代码中,我们定义了链表节点结构体`ListNode`,包含数据元素`data`和指向下一个节点的指针`next`。在创建单链表的函数`createList()`中,我们定义了头节点`head`和尾节点`tail`,并循环读入数据,创建新节点并将其插入到链表末尾。最后,我们返回头节点。在遍历单链表的函数`traverseList()`中,我们定义了指针`p`指向头节点,循环遍历链表,输出节点数据。