/*
*程序功能:对双向链表操作,主要包括:插入结点、删除结点、查找结点等基本操作
*需要注意的是,链表中附加了一个结点root_p
*root_p是链表的根节点,root_p中的data字段存储的是当前链表中的总结点个数
*root_p->prev指向链表中第一个存放数据的结点,root_p->next指向链表中最后一个存放数据的结点;
*当链表为空时,root_p->prev和root_p->next都为NULL
*/
<img src="https://img-blog.youkuaiyun.com/20141014210038819?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTW9kZXdpc2U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
#include<stdio.h>
#include<stdlib.h>
struct node
{
struct node *prev; /*指向前一个结点的指针*/
int data;
struct node *next; /*指向后一个结点的指针*/
};
int dll_insert(struct node *root_p, int value); /*插入结点,插入成功返回1,否则返回0*/
int dll_delete(struct node *root_p, int value); /*删除结点,插入成功返回1,否则返回0*/
int dll_member(struct node *root_p, int value); /*查找结点,如果存在返回1,否则返回0*/
void dll_print(struct node *root