#include <stdio.h>
#define MaxSize 50
typedef struct {
int data[MaxSize];
int length;
} SqList;
void PrintList(SqList List) {
printf("data[");
for (int i = 0; i < List.length; ++i) {
if (i == List.length - 1) {
printf("%d", List.data[i]);
} else {
printf("%d, ", List.data[i]);
}
}
printf("], Length=%d\n", List.length);
}
//按位查找--位序
int ListGetElement(SqList List, int i) {
if (i < 1 || i > List.length + 1) {
return 0;
}
return List.data[i - 1];
}
//按值查找--位序
int ListSearchElement(SqList List, int e) {
for (int i = 0; i < List.length; ++i) {
if (List.data[i] == e) {
return i + 1;
}
}
return 0;
}
//顺序插入--位序
bool ListInsert(SqList &List, int i, int e) {
if (i < 1 || i > List.length + 1) {
return false;
}
if (List.length >= MaxSize) {
return false;
}
for (int j = List.length; j >= i; j--) {
List.data[j] = List.data[j - 1];
}
List.data[i - 1] = e;
List.length++;
return true;
}
//删除元素--位序
bool ListDelete(SqList &List, int i, int &e) {
if (i < 1 || i > List.length) {
return false;
}
e = List.data[i - 1];
for (int j = i; j < List.length; ++j) {
List.data[j - 1] = List.data[j];
}
List.length--;
return true;
}
bool ListSetElement(SqList &List, int i, int e) {
if (i < 1 || i > List.length) {
return false;
}
List.data[i - 1] = e;
return true;
}
int main() {
SqList sqList;
for (int i = 0; i < 10; ++i) {
ListInsert(sqList, i + 1, i + 1);
}
PrintList(sqList);
ListInsert(sqList, 11, 11);
PrintList(sqList);
ListInsert(sqList, 51, 51);
PrintList(sqList);
int result = ListGetElement(sqList, 10);
printf("Get result=%d\n", result);
result = ListSearchElement(sqList, 8);
printf("Search result=%d\n", result);
ListDelete(sqList, 7, result);
printf("Delete result=%d\n", result);
PrintList(sqList);
ListSetElement(sqList, 10, 100);
PrintList(sqList);
return 0;
}