数据结构中,写一段能实现顺序表的各种基本运算的代码
时间: 2024-09-25 18:06:58 浏览: 25
在数据结构中,顺序表通常是一种简单的线性表,它通过数组的形式存储元素,支持插入、删除和查找等基本操作。这里我会给出一个基于 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 append(ListNode** head, int value) {
ListNode* newNode = createList();
newNode->data = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
ListNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 插入元素到指定位置
void insert(ListNode** head, int index, int value) {
if (index <= 0) {
printf("Invalid index.\n");
return;
}
ListNode* newNode = createList();
newNode->data = value;
newNode->next = *head;
for (int i = 0; i < index - 1 && newNode != NULL; ++i) {
newNode = newNode->next;
}
if (newNode == NULL) {
printf("Index out of bounds.\n");
} else {
newNode->next = newNode->next->next;
*head = newNode;
}
}
// 删除指定位置的元素
void delete(ListNode** head, int index) {
if (*head == NULL || index <= 0) {
printf("Invalid operation.\n");
return;
}
ListNode* temp = *head;
if (index == 1) {
*head = temp->next;
free(temp);
return;
}
for (int i = 1; i < index && temp != NULL; ++i) {
temp = temp->next;
}
if (temp == NULL) {
printf("Index out of bounds.\n");
} else {
temp->next = temp->next->next;
free(temp);
}
}
// 查找元素
int search(ListNode* head, int value) {
ListNode* current = head;
while (current != NULL) {
if (current->data == value) {
return 1; // 找到了,返回1
}
current = current->next;
}
return 0; // 没找到,返回0
}
// 打印顺序表
void printList(ListNode* head) {
while (head != NULL) {
printf("%d -> ", head->data);
head = head->next;
}
printf("NULL\n");
}
int main() {
ListNode* head = createList();
// 添加元素
append(&head, 1);
append(&head, 2);
append(&head, 3);
// 打印初始列表
printList(head);
// 插入、删除和查找操作...
// ...
return 0;
}
```
这个代码示例包含了顺序表的基本操作,如创建、插入、删除和查找元素。请注意,这只是一个基础版本,实际应用可能需要处理更多边界条件和错误情况。