声明一个单链表结构体类型,在main()中新建一个链表(带头结点),然后编码完成向链表里新增结点、删除结点的操作。
时间: 2024-09-24 12:21:42 浏览: 33
python实现获取单向链表倒数第k个结点的值示例
首先,让我们声明一个简单的单链表结构体类型,包含数据域data和指向下一个节点的指针next:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 创建一个新的链表节点
ListNode* createNode(int data) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 在链表尾部添加新节点
void appendToList(ListNode** head, int data) {
if (*head == NULL) {
*head = createNode(data);
} else {
ListNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = createNode(data);
}
}
// 删除给定值的节点
void deleteNode(ListNode** head, int target) {
if (*head == NULL) {
printf("List is empty.\n");
return;
}
ListNode* prev = NULL;
ListNode* current = *head;
if (current->data == target) {
*head = current->next;
free(current);
return;
}
while (current->data != target && current->next != NULL) {
prev = current;
current = current->next;
}
if (current->data == target) {
prev->next = current->next;
free(current);
} else {
printf("Target not found in the list.\n");
}
}
int main() {
// 初始化一个空链表
ListNode* head = NULL;
// 新增节点示例
appendToList(&head, 10); // 添加 10
appendToList(&head, 20); // 添加 20
// 打印链表
ListNode* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
// 删除节点示例
deleteNode(&head, 20); // 删除 20
// 再次打印链表
temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
return 0;
}
```
在这个例子中,我们首先创建了一个名为ListNode的结构体,接着编写了appendToList和deleteNode函数分别用于在链表尾部添加节点和删除特定值的节点。在main()函数中展示了如何使用这些操作。
阅读全文