#include<stdio.h>
#define MaxSize 10//定义最大长度
typedef struct {
int data[MaxSize];
int length;
}SqList;
//初始化顺序表
void InitList(SqList& L) {
for (int i = 0; i < MaxSize; i++) {
L.data[i]= 0;//顺序表初始化为0
}L.length = 0;//顺序表初始长度为0
}
//在L表中第i位置插入元素e,不具备健壮性
void ListInsert1(SqList& L, int i, int e) {
for (int j = L.length; j >= i; j--)
L.data[j] = L.data[j - 1];
L.data[i-1] = e;
L.length++;
}
//在L表中第i位置插入元素e,具备健壮性
bool ListInsert2(SqList& L, int i, int e) {
if (i<1 || i>L.length + 1)
return false;
if (L.length >= MaxSize)
return false;
for (int j = L.length; j >= i; j--)
L.data[j] = L.data[j - 1];
L.data[i - 1] = e;
L.length++;
return true;
}
//在L表中删除第i个元素,并用e返回所删除元素
bool ListDelete(SqList& L, int i, int& e) {
if (i<1 || i>L.length)
return false;
if (L.length == 0)
return false;
e = L.data[i - 1];
for (int j = i; j < L.length; j++) {
L.data[j-1] = L.data[j];
}L.length--;
return true;
}
//查找与x相同的元素,并返回位置
int LocateElem(SqList L, int x) {
for (int j = 0; j < L.length; j++)
if (L.data[j] == x)
return j + 1;
return 0;
}
//打印顺序表
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]);
printf("长度为%d\n", L.length);
}
int main()
{
int e,x;
SqList L;
InitList(L);
//加入数据
for (int i = 0; i < MaxSize; i++, L.length++) {
scanf_s("%d", &L.data[i]);
if (L.data[i] == 999)
break;
}
PrintList(L);
//第3个位置插入67
ListInsert1(L, 3, 67);
PrintList(L);
//第8个位置插入88
bool r1 = ListInsert2(L, 8, 88);
if (r1 == 1) PrintList(L);
else printf("插入失败");
//删除第5个元素
bool r2 = ListDelete(L, 5, e);
if (r2 == 1) {
PrintList(L);
printf("删除的元素为%d\n", e);
}else printf("删除失败");
//查找与x相同的元素
x = LocateElem(L, 5);
if (x == 0)
printf("查找失败");
else
printf("所查找元素为第%d个元素", x);
return 0;
}
顺序表的增、删、(改)、查
于 2022-05-02 20:58:37 首次发布