C语言链表创建、插入节点及遍历详解
C语言链表创建、插入节点及遍历详解
链表是一种常用的数据结构,它由一系列节点组成,每个节点包含数据域和指针域,指针域指向下一个节点。本文将介绍如何在 C 语言中创建链表、插入节点以及遍历链表,并提供代码示例和详细解释。
1. 定义链表节点
首先,我们需要定义链表节点的结构体。每个节点包含两个部分:数据域和指针域。数据域用于存储数据,指针域用于指向下一个节点。
typedef struct p {
int number;
struct p *next;
} List;
2. 创建链表
创建链表的第一步是创建头节点。头节点不存储数据,它的作用是指向链表的第一个节点。
List *head = NULL;
3. 插入节点
要向链表中插入节点,我们需要创建一个新的节点,并将它的数据域设置为要插入的值,指针域设置为 NULL。然后,我们需要将新节点连接到链表中。
以下代码演示了如何在链表尾部插入节点:
List *add(List *tail, int i) {
List *t = (List *)malloc(sizeof(List));
t->number = i;
t->next = NULL;
if (tail == NULL) {
// 如果链表为空,则将新节点设置为头节点
head = t;
} else {
// 否则,将新节点连接到链表尾部
tail->next = t;
}
return t; // 返回新节点,作为新的尾节点
}
4. 遍历链表
遍历链表是指依次访问链表中的每个节点。我们可以使用循环结构来遍历链表,从头节点开始,每次访问一个节点,直到访问到最后一个节点。
以下代码演示了如何遍历链表并打印每个节点的数据:
void printList(List *head) {
List *q = head;
while (q != NULL) {
printf('%d ', q->number);
q = q->next;
}
printf('
');
}
5. 完整代码示例
#include <stdio.h>
#include <stdlib.h>
typedef struct p {
int number;
struct p *next;
} List;
List *head = NULL;
List *add(List *tail, int i);
void printList(List *head);
int main() {
int i;
// 创建链表
List *tail = NULL;
do {
scanf('%d', &i);
if (i != -1) {
tail = add(tail, i);
}
} while (i != -1);
// 遍历链表并打印每个节点的数据
printList(head);
return 0;
}
List *add(List *tail, int i) {
List *t = (List *)malloc(sizeof(List));
t->number = i;
t->next = NULL;
if (tail == NULL) {
// 如果链表为空,则将新节点设置为头节点
head = t;
} else {
// 否则,将新节点连接到链表尾部
tail->next = t;
}
return t; // 返回新节点,作为新的尾节点
}
void printList(List *head) {
List *q = head;
while (q != NULL) {
printf('%d ', q->number);
q = q->next;
}
printf('
');
}
6. 总结
本文介绍了在 C 语言中创建链表、插入节点以及遍历链表的方法,并提供了代码示例和详细解释。链表是一种常用的数据结构,掌握链表的操作方法对于学习数据结构和算法非常重要。
原文地址: https://www.cveoy.top/t/topic/jIt 著作权归作者所有。请勿转载和采集!