有点小问题,埋个伏笔
代码:
#include <stdio.h>
#define MAX_SIZE 100
typedef int DataType;
typedef struct{
DataType data;
int cur;
}component,SLinkList[MAX_SIZE];
void InitList(SLinkList L);
int Malloc(SLinkList space);//return the backup node
void Free(SLinkList space,int k);
DataType ListInsert(SLinkList L,int i,DataType e);
DataType ListDelete(SLinkList L,int i,DataType *e);
int ListLength(SLinkList L);
void main(){
int i;
DataType *e=NULL;
SLinkList L;
InitList(L);
}
void InitList(SLinkList L){
int i;
L[MAX_SIZE-1].cur = 0;//list head
for(i=0;i<MAX_SIZE-2;i++){
L[i].cur = i+1;
}
L[MAX_SIZE-2].cur = 0;
}
int Malloc(SLinkList space){
int i = space[0].cur;
if(i){
space[0].cur = space[i].cur;
}
return i;
}
DataType ListInsert(SLinkList L,int i,DataType e){
int m,j,k = MAX_SIZE -1;
if(i<1||i>ListLength(L)+1){
return 0;
}
j=Malloc(L);
if(j){
L[j].data = e;
for(m=1;m<i;m++){
k=L[k].cur;
L[j].cur = L[k].cur;
L[k].cur = j;
}
return 1;
}
return 0;
}
int ListLength(SLinkList L){
return L[0].cur;
}
void Free(SLinkList space,int k){
space[k].cur = space[0].cur;//point to the first node
space[0].cur = k;//
}
DataType ListDelete(SLinkList L,int i,DataType *e){
int j,k=MAX_SIZE-1;
if(i<1||i>ListLength(L))
return 0;
for(j=1;j<i;j++){
k=L[k].cur;
j=L[k].cur;
L[k].cur = L[j].cur;
e=L[j].data;
Free(L,j);
return 1;
}
}