链表结构定义
typedef struct node
{
char data[19+1];
struct node *llink;
struct node *rlink;/*上一个,下一个*/
};
/*创建链表*/
int creat_list(struct node *h)
{
/*
if((h=(struct node *)malloc(sizeof(struct node)))==NULL)
{
printf("不能分配内存空间!");
return -1;
}*/
h->data[0]='/0';
h->llink=NULL;
h->rlink=NULL;
return 1;
}
/*清空链表*/
int free_list(struct node *h)
{
struct node *p,*s;
p=h->rlink;
while(p!=NULL)
{
s=p;
free(p);
p=s->rlink;
}
return 1;
}
/*查找数据*/
int find_list_data(struct node * h,char *elem)
{
struct node *p;
char *y=NULL;
if(h==NULL)
{
return -1;
}
p=h->rlink;
while(p!=NULL)/*链表尾*/
{
y=p->data;
if(strncmp(y,elem,18)==0)/**/
{
return 1;
}
else
{
p=p->rlink;
}
}
return 0;
}
/*删除数据*/
int del_list_data(struct node * h,char *elem)
{
struct node *p,*l;
char *y;
if(h==NULL)
return -1;
p=h->rlink;
while(p!=NULL) /*链表尾*/
{
y=p->data;
if(strncmp(y,elem,18)==0)/**/
{
l=p->llink;
l->rlink=p->rlink;
free(p);
return 1;
}
else
{
p=p->rlink;
}
}
return 0;
}
/*增加数据*/
int add_list_data(struct node *h,char *elem)
{
struct node *s,*t;
if(h==NULL)
return -1;
if((s= (struct node *)malloc(sizeof(struct node)))==NULL)
{
printf("不能分配内存空间!");
return -1;
}
strncpy(s->data,elem,18);
s->llink=h;
if(h->rlink==NULL)/*链表为空*/
{
h->rlink=s;
s->rlink=NULL;
}
else
{
s->rlink=h->rlink;
h->rlink->llink=s;
h->rlink=s;
}
return 1;
}