线性表的顺序存储结构之数组
代码实现一维数组的获取,插入,删除
#include <stdio.h>
#define MAXSIZE 10
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType data[MAXSIZE];
int length;
} SqList;
// 获取数据
Status GetElem(SqList L, int index, ElemType *e) {
if (L.length == MAXSIZE || index < 1 || index > L.length) {
return 0;
}
*e = L.data[index - 1];
return 1;
}
// 插入数据
Status ListInsert(SqList *L, int index, ElemType e) {
if (L->length == MAXSIZE || index < 1 || index > L->length + 1) {
return 0;
}
if (index <= L->length) {
int i;
for (i = L->length - 1; i >= index - 1; i--) {
L->data[i + 1] = L->data[i];
}
}
L->data[index - 1] = e;
L->length++;
return 1;
}
// 删除数据
Status DeleteElem(SqList *L, int index) {
if (L->length == MAXSIZE || index < 1 || index > L->length) {
return 0;
}
if (index < L->length) {
int i;
for (i = index; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
}
L->length--;
return 1;
}
int main() {
SqList List;
List.length = 0;
int i;
for (i = 1; i < 6; i++) {
ListInsert(&List, 1, i);
}
printf("在第一个位置插入数据后,长度为:%d", List.length);
printf("\n");
printf("查看数组:");
for (i = 0; i < List.length; i++) {
printf("%d ", List.data[i]);
}
printf("\n");
printf("使用GetElem查看数组:");
for (i = 0; i < List.length; i++) {
ElemType temp;
GetElem(List, i + 1, &temp);
printf("%d ", temp);
}
printf("\n");
DeleteElem(&List, 2);
printf("删除第二个数据后:");
for (i = 0; i < List.length; i++) {
printf("%d ", List.data[i]);
}
printf("\n");
// 防止控制台消失
getchar();
return 0;
}
运行结果
O(∩_∩)O~~