首先,让我们来创建一个顺序表的结构和运算定义的头文件 `seqList.h`,其中包含了顺序表的基本操作和算法实现。
++
#ifndef SEQLIST_H
#define SEQLIST_H
#define MAX_SIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAX_SIZE]; // 顺序表的数据域
int length; // 顺序表的当前长度
} SeqList;
// 初始化顺序表
void init(SeqList *list);
// 判断顺序表是否为空
int isEmpty(SeqList list);
// 判断顺序表是否已满
int isFull(SeqList list);
// 获取顺序表的长度
int getLength(SeqList list);
// 在指定位置插入元素
int insert(SeqList *list, int index, int data);
// 删除指定位置的元素
int delete(SeqList *list, int index);
// 获取指定位置的元素
int getElem(SeqList list, int index, int *data);
// 查找指定元素的位置
int locateElem(SeqList list, int data);
// 打印顺序表中的所有元素
void printList(SeqList list);
#endif
接下来在 `seqList.c` 文件中实现顺序表的各种操作。
++
#include <stdio.h>
#include "seqList.h"
// 初始化顺序表
void init(SeqList *list) {
list->length = 0;
}
// 判断顺序表是否为空
int isEmpty(SeqList list) {
return (list.length == 0);
}
// 判断顺序表是否已满
int isFull(SeqList list) {
return (list.length == MAX_SIZE);
}
// 获取顺序表的长度
int getLength(SeqList list) {
return list.length;
}
// 在指定位置插入元素
int insert(SeqList *list, int index, int data) {
if (index < 0 || index > list->length)
return 0; // 插入位置不合法
if (isFull(*list))
return 0; // 顺序表已满
for (int i = list->length - 1; i >= index; i--) {
list->data[i + 1] = list->data[i]; // 元素后移
}
list->data[index] = data;
list->length++;
return 1;
}
// 删除指定位置的元素
int delete(SeqList *list, int index) {
if (index < 0 || index >= list->length)
return 0; // 删除位置不合法
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1]; // 元素前移
}
list->length--;
return 1;
}
// 获取指定位置的元素
int getElem(SeqList list, int index, int *data) {
if (index < 0 || index >= list.length)
return 0; // 获取位置不合法
*data = list.data[index];
return 1;
}
// 查找指定元素的位置
int locateElem(SeqList list, int data) {
for (int i = 0; i < list.length; i++) {
if (list.data[i] == data) {
return i; // 找到元素的位置
}
}
return -1; // 未找到元素
}
// 打印顺序表中的所有元素
void printList(SeqList list) {
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
现在你可以在测试主程序中使用头文件 `seqList.h` 来操作顺序表。
++
#include <stdio.h>
#include "seqList.h"
int main() {
SeqList list;
init(&list);
insert(&list, 0, 10);
insert(&list, 1, 20);
insert(&list, 2, 30);
int data;
getElem(list, 1, &data);
printf("Element at index 1: %d\n", data); // Output: 20
int index = locateElem(list, 30);
printf("Element 30 is at index: %d\n", index); // Output: 2
delete(&list, 1);
printList(list); // Output: 10 30
return 0;
}
这就是一个简单的顺序表实现,你可以根据需要添加更多的操作和算法。请注意,在测试主程序中只使用头文件 `seqList.h`,而将具体实现放在 `seqList.c` 文件中,以便提高代码的可读性和可维护性。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |