C语言创建单链表并赋值:实例教程
C语言创建单链表并赋值:实例教程
本教程将演示如何使用C语言创建一个空的单链表,并向其添加元素。代码示例如下:
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct node {
int value;
struct node *next;
} Node;
// 创建一个空的单链表
Node* create_list() {
return NULL;
}
// 在链表尾部插入一个节点
Node* insert_tail(Node *head, int value) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->value = value;
new_node->next = NULL;
if (head == NULL) {
head = new_node;
} else {
Node *tail = head;
while (tail->next != NULL) {
tail = tail->next;
}
tail->next = new_node;
}
return head;
}
// 打印链表
void print_list(Node *head) {
while (head != NULL) {
printf("%d ", head->value);
head = head->next;
}
printf("\n");
}
int main() {
// 创建一个空的单链表
Node *list = create_list();
// 在链表尾部插入元素1, 2, 3
list = insert_tail(list, 1);
list = insert_tail(list, 2);
list = insert_tail(list, 3);
// 打印链表
print_list(list);
return 0;
}
输出结果为:
1 2 3
代码解析:
- 定义链表节点结构体:
typedef struct node {
int value;
struct node *next;
} Node;
该结构体定义了链表的节点,包含一个整型值 value 和一个指向下一个节点的指针 next。
- 创建空链表:
Node* create_list() {
return NULL;
}
该函数创建一个空的单链表,并将头节点指针设置为 NULL,表示链表为空。
- 在链表尾部插入节点:
Node* insert_tail(Node *head, int value) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->value = value;
new_node->next = NULL;
if (head == NULL) {
head = new_node;
} else {
Node *tail = head;
while (tail->next != NULL) {
tail = tail->next;
}
tail->next = new_node;
}
return head;
}
该函数首先创建一个新的节点 new_node 并将其值设置为 value,然后将 new_node->next 设置为 NULL,表示该节点是当前链表的最后一个节点。
接着,函数判断链表是否为空。如果为空,则将 head 指向 new_node。否则,遍历链表找到最后一个节点,并将其 next 指针指向 new_node。
最后,函数返回更新后的链表的头节点指针 head。
- 打印链表:
void print_list(Node *head) {
while (head != NULL) {
printf("%d ", head->value);
head = head->next;
}
printf("\n");
}
该函数从链表的头节点开始遍历,逐个打印每个节点的 value 值,直到遇到 NULL 节点。
- 主函数:
int main() {
// 创建一个空的单链表
Node *list = create_list();
// 在链表尾部插入元素1, 2, 3
list = insert_tail(list, 1);
list = insert_tail(list, 2);
list = insert_tail(list, 3);
// 打印链表
print_list(list);
return 0;
}
主函数首先调用 create_list() 创建一个空的单链表,然后依次调用 insert_tail() 函数向链表尾部插入节点,最后调用 print_list() 函数打印链表。
注意:
- 以上代码示例没有包含错误处理和内存管理,仅供学习参考。
- 在实际应用中,应该根据具体情况进行完善。
- 单链表是线性数据结构中最基础的一种,可以作为更复杂数据结构的基础。
原文地址: https://www.cveoy.top/t/topic/nwjp 著作权归作者所有。请勿转载和采集!