顺序表的基本实现用数据结构的C语言
时间: 2024-05-25 19:16:41 浏览: 97
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前长度
} SeqList;
// 初始化操作,创建一个空的顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 在顺序表的指定位置插入元素
int InsertList(SeqList *L, int pos, int elem) {
if (pos < 1 || pos > L->length + 1) { // 判断插入位置是否合法
return 0;
}
if (L->length >= MAXSIZE) { // 判断顺序表是否已满
return 0;
}
for (int i = L->length; i >= pos; i--) { // 将插入位置后的元素依次向后移动一位
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = elem; // 在指定位置插入元素
L->length++; // 长度加1
return 1;
}
// 删除顺序表中指定位置的元素
int DeleteList(SeqList *L, int pos) {
if (pos < 1 || pos > L->length) { // 判断删除位置是否合法
return 0;
}
for (int i = pos - 1; i < L->length - 1; i++) { // 将删除位置后的元素依次向前移动一位
L->data[i] = L->data[i + 1];
}
L->length--; // 长度减1
return 1;
}
// 获取顺序表中指定位置的元素
int GetElem(SeqList L, int pos) {
if (pos < 1 || pos > L.length) { // 判断位置是否合法
return -1;
}
return L.data[pos - 1]; // 返回指定位置的元素
}
// 在顺序表中查找指定元素,返回其位置
int FindElem(SeqList L, int elem) {
for (int i = 0; i < L.length; i++) { // 依次遍历顺序表中的元素
if (L.data[i] == elem) { // 如果找到了指定元素,返回其位置
return i + 1;
}
}
return -1; // 如果没找到,返回-1
}
// 输出顺序表中的所有元素
void PrintList(SeqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
InsertList(&L, 1, 1);
InsertList(&L, 2, 2);
InsertList(&L, 3, 3);
PrintList(L); // 输出:1 2 3
DeleteList(&L, 2);
PrintList(L); // 输出:1 3
printf("%d\n", GetElem(L, 1)); // 输出:1
printf("%d\n", FindElem(L, 3)); // 输出:2
return 0;
}
阅读全文