1 . ArrayList
// ArrarList
# include <stdio.h>
# define OK 1
# define ERROR 0
# define TRUE 1
# define FALSE 0
# define MAXSIZE 20
typedef int Status;
typedef int ElemType;
typedef struct{
ElemType data[MAXSIZE];
int length;
}ArrayList;
Status InitList(ArrayList *);
Status ListEmpty(ArrayList);
Status ClearList(ArrayList *);
Status GetElem(ArrayList, int, ElemType *);
Status ListInsert(ArrayList *, int, ElemType);
Status ListDelete(ArrayList *, int, ElemType *);
void ListPrint(ArrayList);
int main(){
ArrayList list;
InitList(&list);
ListInsert(&list, 1, 10);
ListInsert(&list, 2, 20);
ListInsert(&list, 3, 30);
ListInsert(&list, 4, 40);
ListPrint(list);
printf("-----------------------\n");
int val;
GetElem(list, 4, &val);
printf("%d\n", val);
printf("-----------------------\n");
ListDelete(&list, 3, &val);
printf("%d\n", val);
printf("-----------------------\n");
ListPrint(list);
printf("-----------------------\n");
ClearList(&list);
ListPrint(list);
return 0;
}
Status InitList(ArrayList * L){
L->length = 0;
return OK;
}
Status ClearList(ArrayList * L){
for (int i = 0; i < L->length; i++) {
i[L->data] = -1;
}
L->length = 0;
return OK;
}
Status GetElem(ArrayList L, int i, ElemType * e){
if(L.length == 0 || i < 1 || i > L.length){
return ERROR;
}
*e = L.data[i-1];
return OK;
}
Status ListInsert(ArrayList * L, int i, ElemType e){
if(L->length == MAXSIZE){
return ERROR;
}
if(i < 1 || i > L->length + 1){
return ERROR;
}
// 从List尾 往i 移动交换位置
if(i <= L->length){
for(int k = L->length-1; k >= i - 1; k--){
L->data[k+1] = L->data[k];
}
}
L->data[i-1] = e;
L->length++;
return OK;
}
Status ListDelete(ArrayList * L, int i, ElemType * e){
if(L->length == 0){
return ERROR;
}
if(i < 1 || i > L ->length){
return ERROR;
}
*e = L->data[i-1];
if(i < L->length){
for(int k = i; k < L->length; k++){
L->data[k-1] = L->data[k];
}
}
L->length--;
return OK;
}
void ListPrint(ArrayList L){
for (int i = 0; i < L.length; i++) {
printf("%d ", i[L.data]);
}
printf("\n");
}
网友评论