数据结构顺序表的基本操作c语言代码
时间: 2024-10-09 16:03:21 浏览: 34
数据结构顺序表 C语言代码实现以及realloc的使用
数据结构中的顺序表(也称数组列表),在C语言中通常通过动态内存分配实现。基本操作主要包括插入、删除和查找元素。下面是一个简单的顺序表实现及其常用操作的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} ListNode;
// 初始化顺序表
ListNode* createList() {
return (ListNode*)malloc(sizeof(ListNode));
}
// 在顺序表尾部插入元素
void insert(ListNode** head, int value) {
ListNode* newNode = createList();
if (*head == NULL) {
*head = newNode;
} else {
newNode->next = *head;
while ((*head)->next != NULL) {
head = &(*head)->next;
}
(*head)->next = newNode;
}
newNode->data = value;
}
// 删除指定位置的元素
void delete(ListNode** head, int index) {
if (*head == NULL) {
return;
}
ListNode* temp = *head;
for (int i = 0; i < index && temp != NULL; ++i) {
temp = temp->next;
}
if (temp == NULL || temp->next == NULL) {
printf("Index out of bounds\n");
return;
}
temp->next = temp->next->next;
}
// 查找并返回指定值的第一个元素
ListNode* search(ListNode* head, int value) {
ListNode* current = head;
while (current != NULL) {
if (current->data == value) {
return current;
}
current = current->next;
}
return NULL;
}
int main() {
ListNode* list = createList();
// 插入元素
insert(&list, 1);
insert(&list, 2);
insert(&list, 3);
// 查找元素
ListNode* found = search(list, 2);
if (found) {
printf("Found element at position: %d\n", findElementPosition(found));
} else {
printf("Element not found.\n");
}
// 删除元素
delete(&list, 1); // 删除第二个元素
// 遍历打印顺序表
printList(list);
return 0;
}
```
这里我们定义了`createList()`用于创建空表,`insert()`插入元素,`delete()`删除元素,`search()`查找元素以及辅助函数如`findElementPosition()`等。注意这个例子仅实现了单链表,对于真正意义上的顺序表(数组),你需要调整内存管理。
阅读全文