#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
struct LNode *next;
ElemType data;
}LNode,*LinkList;
//初始化链表
int Init_List(LinkList &L){
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return 0;
}
//插入元素
int Insert_List(LinkList &L,int pos ,ElemType e){
int j=0;
LinkList p=L,s;
while(p&&j<pos-1){
p=p->next;
j++;
}
if(!p||j>pos-1)
return -1;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 0;
}
//删除元素
int Delete_List(LinkList &L,int pos,ElemType &e){
int j=0;
LinkList p=L,q;
while(p&&j<pos-1){
p=p->next;
j++;
}
q=p->next;
e=q->data;
p->next=q->next;
free(q);
return e;
}
//得到元素
int Get_List(LinkList L,int pos,ElemType &e){
int j=0;
LinkList p=L;
while(p&&j<pos){
p=p->next;
j++;
}
e=p->data;
return e;
}
//清空链表
int Clear_List(LinkList &L){
LinkList q,p;
q=L->next;
while(q){
p=q->next;
free(q);
q=p;
}
L->next=NULL;
return 0;
}
//主函数
int main(){
LinkList L,k;
int j,e;
Init_List(L);
for(j=1;j<=5;j++){
Insert_List(L,1,j);
}
for(k=L->next;k!=NULL;k=k->next){
printf("%d ",k->data);
}
printf("\n");
Delete_List(L,3,e);
printf("%d", e);
printf("\n");
for(k=L->next;k!=NULL;k=k->next){
printf("%d ",k->data);
}
printf("\n");
Get_List(L,4,e);
printf("%d", e);
printf("\n");
Clear_List(L);
for(k=L->next;k!=NULL;k=k->next){
printf("%d ",k->data);
}
return 0;
}