"dll_node.h"
typedef struct NODE{
struct NODE *fwd;
struct NODE *bwd;
int value;
} Node;
#include <stdio.h>
#include <stdlib.h>
#include "dll_node.h"
int
dll_insert(register Node *rootp , int new_value)
{
register Node *next;
register Node *thisone;
register Node *newnode;
/*
**检查是否已经存在该元素,如果存在返回0
*/
for( thisone = rootp ; (next = thisone->fwd) != NULL ; thisone = next){
if( next->value == new_value)
return 0;
if( next->value > new_value)
break;
}
newnode = (Node *) malloc( sizeof( Node));
if( newnode == NULL)
return -1;
newnode->value = new_value;
/*
**把新节点插入到链表中
*/
newnode->fwd = next;
thisone->fwd = newnode;
if( thisone != rootp)
newnode->bwd = thisone;
else
newnode->bwd = NULL;
if( next != NULL)
next->bwd = newnode;
else
rootp->bwd = newnode;
return 1;
}
有序双向链表的插入 C语言实现
最新推荐文章于 2024-04-13 13:15:00 发布