代码源自教科书
先上代码
typedef struct Node{
ElemType data;
struct Node *next;
}Node *LinkList;
Status ListInsert(LinkList *L,int i,ElemType e)
//插入需要三个参数
{
//插入先查找
LinkList p=*L;
int j=1;
while(p&&j<i){
p=p->next;
j++;
}
if(!p||j>i)return ERROR;
//j>i?什么鬼,怎么可能?
LinkList s;
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
Status ListDelete(LinkList *L,int i,ElemType *e){
//删除需要三个参数
//删除前先查找
LinkList p=*L;
int j=1;
while(p->next&&j<i){
p=p->next;
j++;
}
if(!(p->next)||j>i)return ERROR;
LinkList q;
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return OK;
}
Status GetElem(LinkList L,int i,ElemType *e){
//统一三个参数
LinkList p;
p=L->next;
j=1;
while(p&&j<i){
p=p->next;
j++;
}
if(!p||j>i)return ERROR;
*e=p->data;
return OK;
}typedef struct Node