C语言单链表实现:新手入门教程
C语言单链表实现:新手入门教程
本文将带你用 C语言实现一个简单的单链表,包含初始化、插入节点、删除节点和打印链表等基本操作,非常适合新手入门学习数据结构。
#include<stdio.h>
#include<stdlib.h>
// 定义链表节点结构
struct Node {
int data;
struct Node* next;
};
// 初始化链表
struct Node* initList() {
return NULL;
}
// 在链表末尾插入节点
struct Node* insertNode(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;
} else {
struct Node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
return head;
}
// 删除链表中指定的节点
struct Node* deleteNode(struct Node* head, int data) {
if (head == NULL) {
printf('链表为空!\n');
return head;
}
struct Node* temp = head;
struct Node* prev = NULL;
// 如果要删除的节点是头节点
if (temp != NULL && temp->data == data) {
head = temp->next;
free(temp);
return head;
}
// 找到要删除的节点及其前一个节点
while (temp != NULL && temp->data != data) {
prev = temp;
temp = temp->next;
}
// 如果要删除的节点不存在
if (temp == NULL) {
printf('要删除的节点不存在!\n');
return head;
}
// 删除节点
prev->next = temp->next;
free(temp);
return head;
}
// 打印链表
void printList(struct Node* head) {
struct Node* temp = head;
while (temp != NULL) {
printf('%d ', temp->data);
temp = temp->next;
}
printf('\n');
}
int main() {
struct Node* head = initList();
head = insertNode(head, 1);
head = insertNode(head, 2);
head = insertNode(head, 3);
head = insertNode(head, 4);
printf('链表:');
printList(head);
head = deleteNode(head, 3);
printf('删除节点后的链表:');
printList(head);
return 0;
}
这个程序中包含了链表的初始化、插入节点、删除节点和打印链表的功能。你可以根据自己的需要进行修改和扩展。
学习建议:
- 仔细阅读代码并理解每个函数的功能。
- 尝试在程序中添加新的节点并进行删除操作,观察结果。
- 可以尝试实现其他链表操作,例如查找节点、修改节点等。
通过这个简单的例子,你已经掌握了单链表的基本操作。希望本文能帮助你更好地理解单链表,并在未来的学习和应用中更加得心应手。
原文地址: https://www.cveoy.top/t/topic/Hga 著作权归作者所有。请勿转载和采集!