C语言编程实现单向链表建立、删除、插入、输出
时间: 2023-09-25 07:12:17 浏览: 68
以下是C语言编写的单向链表建立、删除、插入和输出的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
struct Node* head = NULL;
void insert(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = head;
head = newNode;
}
void delete(int data) {
struct Node* temp = head;
struct Node* prev = NULL;
if (temp != NULL && temp->data == data) {
head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != data) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
printf("%d not found in list\n", data);
return;
}
prev->next = temp->next;
free(temp);
}
void printList() {
struct Node* temp = head;
printf("List: ");
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
insert(5);
insert(7);
insert(3);
insert(9);
printList();
delete(3);
printList();
delete(10);
printList();
return 0;
}
```
在这个例子中,我们定义了一个名为 `Node` 的结构体,它包含一个整数数据和一个指向下一个节点的指针。我们还定义了一个指向链表头部的指针 `head`。
`insert` 函数将新节点插入链表的开头。它动态分配内存来创建新节点,并将其指向当前链表的头部。之后,将 `head` 指向新节点。
`delete` 函数在链表中查找指定数据的节点并删除它。如果该节点是链表的第一个节点,则将 `head` 指向下一个节点。否则,它将遍历链表直到找到数据匹配的节点,并将其从链表中删除。
`printList` 函数遍历链表并打印每个节点的数据。
在 `main` 函数中,我们插入一些节点并打印链表。然后,我们删除节点并再次打印链表。
阅读全文