双链表插入函数

 1 //双链表插入函数
2 //把一个新值插入到一个双链表中,rootp是一个指向根节点的指针
3 //value是需要插入的新值
4 //返回值:如果链表原先已经存在这个值,函数返回0
5 //如果为新值分配内存失败,函数返回-1
6 //如果新值成功地插入到链表中,函数返回1
7 #include<stdlib.h>
8 #include<stdio.h>
9 #include"doubly_liked_list_node.h"
10
11 int dll_insert(register Node *rootp,int value)
12 {
13 register Node *this;
14 register Node *Next;
15 register Node *newnode;
16 //查看value是否已经存在于链表中,如果是就返回
17 //否则,为新值创建一个新节点(“newnode"将指向它)
18 //"this"将指向应该在新节点之前的那个节点
19 //"next"将指向应该在新节点之后的那个节点
20
21 for(this=rootp;(next=this->fwd)!=NULL;this=next)
22 {
23 if(next->value==value)
24 return 0;
25 if(next->value>value)
26 break;
27 }
28 newnode=(Node *)malloc(sizeof(Node));
29 if(newnode==NULL)
30 return -1;
31 newnode->value=value;
32 //把新节点添加到链表中
33 newnode->fwd=next;
34 this->fwd=newnode;
35
36 if(this!=rootp)
37 newnode->bwd=this;
38 else
39 newnode->bwd=NULL;
40
41 if(next!=NULL)
42 next->bwd=newnode;
43 else
44 rootp->bwd=newnode;
45 return 1;
46 }

 

转载于:https://www.cnblogs.com/candyming/archive/2011/12/19/2293893.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值