#include <stdlib.h>
#include <assert.h>
#include <stdio.h>typedef struct NODE
{
struct NODE *f;
struct NODE *b;
int value;}Node;
int dll_insert( register Node *rootp, int value)
{
register Node *this;
register Node *next;
register Node *newnode;for( this = rootp; ( next = this -> f) != NULL; this = next)
{
if( next -> value == value)
return 0;
if( next -> value > value)
break;
}newnode = ( Node* )malloc( sizeof( Node ));
if( newnode == NULL)
return -1;
newnode -> value = value;newnode -> f = next;
this -> f = newnode;if( this != rootp)
newnode -> b = this;
else
newnode -> b = NULL;if( next != NULL)
next -> b = newnode;
else
rootp -> b = newnode;return 1;
}int main()
{
Node* root;
root = ( Node* )malloc( sizeof( Node ) );//创建一个根指针
root -> f = NULL;//root里面f中的内容为NULL
root -> b = NULL;//root里面b中的内容为NULL
dll_insert( root, 3 );//在一个空的双链表中插入3
dll_insert( root, 5 );//在双链表中插入5printf( "%d\n", root -> f -> value );
printf( "%d\n", root -> f -> f -> value );
printf( "%d\n", root -> b -> value );
printf( "%d\n", root -> b -> b -> value );return 0;
}