用C语言写一个顺序表的查找、插入、删除全部的代码
时间: 2024-10-05 20:02:20 浏览: 78
C语言实现动态顺序表的实现代码
在C语言中,我们可以使用结构体来表示顺序表,并提供相应的函数来完成查找、插入和删除操作。下面是一个简单的顺序表实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构体
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} ListNode;
// 初始化顺序表
ListNode* createList() {
return (ListNode*)malloc(sizeof(ListNode));
}
// 查找特定元素
ListNode* search(ListNode* head, int target) {
ListNode* current = head;
while (current != NULL) {
if (current->data == target)
return current;
current = current->next;
}
return NULL; // 如果未找到目标值,则返回NULL
}
// 插入元素
void insert(ListNode** head, int value) {
ListNode* newNode = createList();
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 删除元素
void delete(ListNode** head, int target) {
ListNode* current = *head;
ListNode* previous = NULL;
if (current != NULL && current->data == target) {
*head = current->next; // 如果头节点就是目标,直接替换
free(current);
return;
}
while (current != NULL && current->data != target) {
previous = current;
current = current->next;
}
if (current == NULL) return; // 没有找到目标
previous->next = current->next;
free(current); // 释放已找到的目标节点内存
}
// 打印顺序表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
ListNode* head = createList(); // 创建空列表
insert(&head, 5);
insert(&head, 10);
insert(&head, 15);
printList(head); // 输出:5 -> 10 -> 15 -> NULL
ListNode* foundNode = search(head, 10); // 查找元素10
if (foundNode != NULL) {
printf("Found element 10 at position %d\n", findPosition(head, foundNode)); // 自行实现位置查找功能
} else {
printf("Element not found.\n");
}
delete(&head, 10); // 删除元素10
printList(head); // 输出:5 -> 15 -> NULL
return 0;
}
```
在这个例子中,`search()`函数用于查找指定值,`insert()`函数用于在链表头部插入元素,`delete()`函数用于删除指定值的节点。注意,这里省略了计算节点位置的findPosition()函数,你需要自行实现它。
阅读全文