#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType* elem;
int length; // 实际元素的个数
} SqList;
Status Init_SqList(SqList& L) {
L.elem = (ElemType*)malloc(MAXSIZE * sizeof(ElemType));
if (!L.elem)
return OVERFLOW;
L.length = 0;
return OK;
}
void Create_L(SqList& L, int n) {
for (int i = 0; i < n; i++) {
scanf("%d", &L.elem[i]);
L.length++;
}
}
void DestoryList(SqList& L) {
if (L.elem)
free(L.elem);
L.elem = NULL;
}
void ClearList(SqList& L) {
L.length = 0;
}
int GetLength(SqList L) {
return L.length;
}
int IsEmpty(SqList L) {
if (L.length == 0)
return 1;
else
return 0;
}
int LocateElem(SqList L, ElemType e) {
for (int i = 0; i < L.length; i++) {
if (L.elem[i] == e)
return i + 1;
}
return 0;
}
Status InsertElemList(SqList &L, int i, ElemType e) {
if (L.Length == MAXSIZE)
return OVERFLOW;
if (i > L.length + 1 || i < 1)
return ERROR;
for (int j = L.length - 1; j >= i; j--) {
L.elem[j + 1] = L.elem[j];
}
L.elem[i - 1] = e;
L.length++;
return OK;
}
//删除
Status DeleteElemList(SqList &L,int i){
if(i>L.length ||i<1)return ERROR;
for(int j=i;j<L.length;j++){
L.elem[j-1]=L.elem[j];
}
L.length--;
return OK;
}
void print_L(SqList L) {
if (L.elem) {
if (IsEmpty(L) == 0) {
printf("该顺序表的元素有:");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.elem[i]);
}
printf("\n");
} else {
printf("该顺序表是空表\n");
}
} else {
printf("该顺序表不存在\n");
}
}
Status GetElem(SqList L, int i, ElemType& e) {
if (i < 1 || i > L.length)
return ERROR;
e = L.elem[i - 1];
return OK;
}
int main() {
SqList L1;
int n, i, e;
if (Init_SqList(L1) == OK) {
printf("顺序表初始化成功......\n");
printf("请输入顺序表元素的个数:");
scanf("%d", &n);
Create_L(L1, n);
print_L(L1);
printf("请输入元素的位置:");
scanf("%d", &i);
if (GetElem(L1, i, e) == OK) {
printf("第%d个元素的值为%d\n", i, e);
} else {
printf("输入的位置超出范围\n");
}
printf("请输入查找元素的值:");
scanf("%d", &e);
i = LocateElem(L1, e);
if (i == 0) {
printf("您查找的元素不存在!\n");
} else {
printf("该元素的位置:%d\n", i);
}
printf("请输入插入元素的值:");
scanf("%d", &e);
printf("请输入插入元素的位置:");
scanf("%d", &i);
if (InsertElemList(L1, i, e) == OK) {
printf("新增元素成功!\n");
print_L(L1);
} else if (InsertElemList(L1, i, e) == ERROR) {
printf("插入的位置超出范围。\n");
} else {
printf("顺序表已满。\n");
}
printf("请输入删除元素的位置:");
scanf("%d",&i);
if(DeleteElemList(L1,i)==1){
printf("删除成功。\n");
}
else{
printf("删除失败,输入的位置超范围。\n");
}
} else {
printf("顺序表初始化失败.....\n");
}
return 0;
}
数据结构:顺序表
于 2024-03-26 11:18:24 首次发布