用c语言写单链表的基本操作
时间: 2023-09-20 18:12:05 浏览: 93
单链表是一种常用的数据结构,它由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域用于存储节点的数据,指针域用于指向下一个节点。以下是用C语言实现单链表的基本操作代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 创建链表节点
ListNode* createNode(int val) {
ListNode *node = (ListNode*) malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
return node;
}
// 插入节点到链表尾部
void insertTail(ListNode **head, int val) {
ListNode *node = createNode(val);
if (*head == NULL) {
*head = node;
} else {
ListNode *p = *head;
while (p->next != NULL) {
p = p->next;
}
p->next = node;
}
}
// 删除链表中指定节点
void deleteNode(ListNode **head, int val) {
ListNode *p = *head, *prev = NULL;
while (p != NULL && p->val != val) {
prev = p;
p = p->next;
}
if (p == NULL) {
return;
}
if (prev == NULL) {
*head = p->next;
} else {
prev->next = p->next;
}
free(p);
}
// 打印链表
void printList(ListNode *head) {
ListNode *p = head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main() {
ListNode *head = NULL;
// 插入节点
insertTail(&head, 1);
insertTail(&head, 2);
insertTail(&head, 3);
// 删除节点
deleteNode(&head, 2);
// 打印链表
printList(head);
return 0;
}
```
上述代码实现了单链表的创建、插入、删除和打印操作。在插入和删除操作中,需要使用指向指针的指针(即二级指针)来修改链表头节点的值。
阅读全文