请用c语言写出一段链表及其基本操作
时间: 2023-09-30 15:02:55 浏览: 109
好的,下面是用 C 语言实现链表及其基本操作的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
// 初始化链表
ListNode* initList() {
ListNode* head = (ListNode*)malloc(sizeof(ListNode)); // 创建头节点
head->next = NULL;
return head;
}
// 在链表末尾插入一个节点
void insert(ListNode* head, int val) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode)); // 创建新节点
node->val = val;
node->next = NULL;
ListNode* p = head;
while (p->next != NULL) { // 找到链表末尾
p = p->next;
}
p->next = node; // 将新节点插入到链表末尾
}
// 删除链表中第一个值为 val 的节点
void delete(ListNode* head, int val) {
ListNode* p = head;
while (p->next != NULL && p->next->val != val) { // 找到第一个值为 val 的节点
p = p->next;
}
if (p->next != NULL) { // 找到了,删除该节点
ListNode* node = p->next;
p->next = node->next;
free(node);
}
}
// 遍历链表并打印每个节点的值
void traverse(ListNode* head) {
ListNode* p = head->next; // 从第一个节点开始遍历
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main() {
ListNode* head = initList(); // 初始化链表
insert(head, 1); // 在链表末尾插入节点
insert(head, 2);
insert(head, 3);
insert(head, 4);
traverse(head); // 遍历链表并打印每个节点的值
delete(head, 3); // 删除值为 3 的节点
traverse(head); // 再次遍历链表并打印每个节点的值
return 0;
}
```
以上就是使用 C 语言实现链表及其基本操作的代码。
阅读全文