#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREAMENT 10
typedef int Status;
typedef int ElemType;
//定义顺序表类型
typedef struct {
ElemType *elem;
int length;
int listsize;
} SqList;
//初始化一个顺序表
Status Init_SqList(SqList &L) {
L.elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L.elem) return 0;
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return 1;
}
//插入
Status Insert_SqList(SqList &L, int i, ElemType e) {
if(i < 1 || i > L.length + 1) return 0;
if(L.length >= L.listsize) {
ElemType *newbase = (ElemType*)realloc(L.elem, (L.listsize + LISTINCREAMENT) * sizeof(ElemType));
if(!newbase) return 0;
L.elem = newbase;
L.listsize += LISTINCREAMENT;
}
ElemType *q = &L.elem[i - 1];
ElemType *p;
for(p = &(L.elem[L.length - 1]); p >= q; p--) {
*(p + 1) = *p;
}
*q = e;
++L.length;
return 1;
}
//删除
Status Delete_SqList(SqList &L, int i, ElemType &e) {
if(i < 1 || i > L.length) return 0;
ElemType *p = &(L.elem[i - 1]);
e = *p;
ElemType *q = &(L.elem[L.length - 1]);
for(; p < q; p++) {
*p = *(p + 1);
}
--L.length;
return 1;
}
//遍历
Status Traverse_SqList(SqList &L) {
for(int i = 1; i <= L.length; i++) {
printf("%d\n", L.elem[i - 1]);
}
return 1;
}
int main(void) {
Status i, a;
SqList L;
Init_SqList(L);
printf("顺序表长度是:%d\n", L.listsize);
for(int i = 1; i <= 5; i++) {
int m;
scanf("%d", &m);
Insert_SqList(L, i, m);
}
Traverse_SqList(L);
ElemType e = Delete_SqList(L, 3, e);
Traverse_SqList(L);
return 0;
}
顺序表c语言实现
最新推荐文章于 2023-02-19 21:43:44 发布