#include<stdio.h>
#include<stdlib.h>
typedef int Status;//函数类型(当return值为函数结果状态时用)需要自定义!
typedef int ElemType;//相当于给 int起个别名
typedef struct LinkList{
ElemType data;
struct LinkList *next;//存放元素后继结点的地址
ElemType len;
}LinkList;
//初始化链表
LinkList *IniList(){
LinkList *L=(LinkList *)malloc(sizeof(LinkList));//创建头结点,令L指向头结点
L->next=NULL;
L->len=0;
return L;
}
//判空函数
int emply(LinkList *L){
if(L->len==0){
return 1;
}
else
return 0;
}
//删除
ElemType delate(LinkList *L,int i){
if(emply(L)){
return 0;
}
LinkList *p,*m;
p=L;
m=L->next;
while(m!=NULL){
if(m->data==i){
p->next=m->next;
L->len--;
return 0;
}
else
{
p=m;
m=m->next;
}
}
}
//头插法
void CreatList(LinkList *L,int n){
LinkList *p;
p=(LinkList *)malloc(sizeof(LinkList));
p->data=n;
p->next=L->next;
L->next=p;
L->len++;
}
//尾插法
void CreatList_L(LinkList *L,int n){
LinkList *p;
p=(LinkList *)malloc(sizeof(LinkList));
LinkList *r;//标记作用
r=L;
r->next=p;
r=r->next;
r->next=NULL;
p->data=n;
}
//遍历链表
void show(LinkList *L){
LinkList *p;
p=L->next;
while(p!=NULL){
printf("%d,",p->data);
p=p->next;
}
printf("\n");
free(p);
}
//主函数,判断各种操作是否正确
int main(){
LinkList *L=IniList();
printf("头插法创建一个链表\n");
CreatList(L,5);
CreatList(L,4);
CreatList(L,3);
CreatList(L,2);
show(L);
delate(L,3);
show(L);
return 0;
}