编程实现线性表顺序存储下的基本操作: 1.初始化 2.插入元素 3.删除元素 4.获取第i个元素 5.判断元素是否存在---前面5个已提供源码参考 6.获取某个元素的下一个元素;; 7.获取某个元素的前一个元素;);C语言
时间: 2023-05-26 20:04:04 浏览: 106
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 线性表的最大长度
typedef struct {
int *data; // 存储元素的数组
int length; // 线性表的当前长度
} SeqList;
// 初始化线性表
void init(SeqList *L) {
L->data = (int *)malloc(MAXSIZE * sizeof(int)); // 动态分配存储空间
L->length = 0;
}
// 插入元素
int insert(SeqList *L, int i, int e) {
if (i < 1 || i > L->length + 1) { // 判断 i 的范围是否合法
return 0;
}
if (L->length >= MAXSIZE) { // 判断线性表是否已满
return 0;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1]; // 将元素后移
}
L->data[i - 1] = e; // 插入新元素
L->length++; // 线性表长度加 1
return 1;
}
// 删除元素
int del(SeqList *L, int i) {
if (i < 1 || i > L->length) { // 判断 i 的范围是否合法
return 0;
}
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j]; // 将元素前移
}
L->length--; // 线性表长度减 1
return 1;
}
// 获取第 i 个元素
int get(SeqList *L, int i) {
if (i < 1 || i > L->length) { // 判断 i 的范围是否合法
return -1;
}
return L->data[i - 1];
}
// 判断元素是否存在
int find(SeqList *L, int e) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == e) {
return 1;
}
}
return 0;
}
// 获取某个元素的下一个元素
int getNext(SeqList *L, int e) {
for (int i = 0; i < L->length - 1; i++) {
if (L->data[i] == e) {
return L->data[i + 1];
}
}
return -1; // 没有找到该元素或该元素为线性表的最后一个元素
}
// 获取某个元素的前一个元素
int getPrev(SeqList *L, int e) {
for (int i = 1; i < L->length; i++) {
if (L->data[i] == e) {
return L->data[i - 1];
}
}
return -1; // 没有找到该元素或该元素为线性表的第一个元素
}
int main() {
SeqList L;
init(&L);
for (int i = 1; i <= 5; i++) {
insert(&L, i, i);
}
printf("插入前:\n");
for (int i = 1; i <= L.length; i++) {
printf("%d ", get(&L, i));
}
printf("\n");
insert(&L, 3, 10);
printf("在第 3 个位置插入 10 后:\n");
for (int i = 1; i <= L.length; i++) {
printf("%d ", get(&L, i));
}
printf("\n");
del(&L, 4);
printf("删除第 4 个元素后:\n");
for (int i = 1; i <= L.length; i++) {
printf("%d ", get(&L, i));
}
printf("\n");
if (find(&L, 3)) {
printf("元素 3 存在\n");
} else {
printf("元素 3 不存在\n");
}
if (find(&L, 6)) {
printf("元素 6 存在\n");
} else {
printf("元素 6 不存在\n");
}
int next = getNext(&L, 3);
if (next != -1) {
printf("元素 3 的下一个元素是 %d\n", next);
} else {
printf("元素 3 没有下一个元素或不存在\n");
}
int prev = getPrev(&L, 5);
if (prev != -1) {
printf("元素 5 的前一个元素是 %d\n", prev);
} else {
printf("元素 5 没有前一个元素或不存在\n");
}
return 0;
}
阅读全文