
#include
#include
#define ElemType int
#define InitSize 10
#define AddSize 10
#define true 1
#define false 0
typedef int bool;
typedef struct {
ElemType* data;
int MaxSize;
int length;
}SqList;
void InitList(SqList* L) {
L->data = (ElemType*)malloc(InitSize * sizeof(ElemType));
L->length =0;
L->MaxSize = InitSize;
}
void IncreaseSize(SqList* L) {
int* p = L->data;
L->data = (ElemType*)malloc((L->MaxSize + AddSize) * sizeof(ElemType));
L->MaxSize = L->MaxSize + AddSize;
for (int i = 0; i < L->length; i++) {
L->data[i] = p[i];
}
free(p);
}
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
if (i % 10 == 0 && i / 10 != 0) {
printf("\n");
}
printf("%d ", L.data[i]);
}
}
bool ListInsert(SqList* L, int index, ElemType e) {
if (L->length >= L->MaxSize) {
IncreaseSize(L);
}
if (index<1 || index>L->length + 1) {
return false;
}
for (int i = L->length; i >= index; i--) {
L->data[i] = L->data[i - 1];
}
L->data[index - 1] = e;
L->length++;
return true;
}
bool ListDelete(SqList* L, int index, ElemType* e) {
if (index<1 || index>L->length) {
return false;
}
*e = L->data[index - 1];
for (int i = index; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
return true;
}
bool GetElem(SqList L, int index, int* e) {
if (index<1 || index>L.length) {
return false;
}
*e = L.data[index - 1];
return true;
}
bool LocateElem(SqList L, int e, int* index) {
for (int i = 0; i < L.length; i++) {
if (e == L.data[i]) {
*index = i+1;
return true;
}
}
return false;
}
bool ModifyElem(SqList* L, int index, int e) {
if (index<1 || index>L->length) {
return false;
}
L->data[index - 1] = e;
return true;
}
int main() {
SqList L;
InitList(&L);
L.length = 10;
for (int i = 0; i < 10; i++) {
L.data[i] = 1;
}
ListInsert(&L, 5, 9);
PrintList(L);
printf("%d", L.MaxSize);
ElemType e;
ListDelete(&L, 6, &e);
PrintList(L);
ModifyElem(&L, 3, 12);
PrintList(L);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)