c语言双向链表清空,双向链表C语言 - wankaiming的个人空间 - OSCHINA - 中文开源技术交流社区...

链表结构定义

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值