正在学习数据结构与算法,学习资料是小甲鱼的《数据结构和算法》,记录日志
main.c
#include "data.h"
#include <stdio.h>
int main() {
ElemType i[9];
ElemType k[9];
ElemType* m;
ElemType* n;
ElemType* e = (ElemType *)malloc(sizeof(ElemType));
SqList* L = CreateSqList();
m = &i;
n = &k;
int j;
for(j = 1; j < 10; j++) {
i[j-1] = j;
k[j-1] = j;
InsertElem(L,j,m);
InsertElem(L,j,n);
m++;
n++;
}
DeleteElem(L, 15, e);
printf("%d\n",*e);
GetElem(L, 10, e);
printf("%d\n",*e);
for(j = 0; j < L->length; j++) {
printf("%d\n", L->data[j]);
printf("%d\n", *L->data[j]);
}
return 0;
}
#define MAXSIZE 20
#define OK 1;
#define ERROR 0;
#define TRUE 1;
#define FALSE 0;
typedef int ElemType;
typedef struct {
ElemType* data[MAXSIZE];
int length;
} SqList;
typedef int Status;
SqList* CreateSqList(void);
Status GetElem(SqList* L, int i, ElemType* e);
Status InsertElem(SqList* L, int i, ElemType* e);
Status DeleteElem(SqList* L, int i, ElemType* e);
data.c
#include "data.h"
#include <stdlib.h>
SqList* CreateSqList(void) {
SqList *L;
L = (SqList *)malloc(sizeof(SqList));
L->length = 0;
return L;
}
Status GetElem(SqList* L, int i, ElemType* e) {
if(L->length == 0 || i < 1 || i > L->length) {
return ERROR;
}
*e = *L->data[i-1];
return OK;
}
Status InsertElem(SqList* L, int i, ElemType* e) {
if(L->length == MAXSIZE) {
return ERROR;
}
if(i<1 || i> L->length + 1) {
return ERROR;
}
if(i-1 <= L->length) {
int k;
for(k = L->length; k >= i; k--) {
L->data[k] = L->data[k-1];
}
L->data[i-1] = e;
L->length++;
}
return OK;
}
Status DeleteElem(SqList* L, int i, ElemType* e) {
if(i<1 || i>L->length) {
return ERROR;
}
if(i <= L->length) {
int k;
*e = *L->data[i-1];
for(k = i-1; k<L->length; k++) {
L->data[k] = L->data[k+1];
}
L->data[L->length - 1] = NULL;
L->length--;
}
return OK;
}