#include "stdio.h"
#include "stdlib.h"
/*双向链表的存储结构*/
typedef int ElemType;
typedef struct DuLNode{
ElemType data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode;
typedef DuLNode *DuLinkList;
void InitDul_Node(DuLinkList *LHead){
*LHead = (DuLNode*)malloc(sizeof(DuLNode));
(*LHead)->next = NULL;
(*LHead)->prior = NULL;
(*LHead)->data = 0;
}
DuLNode* CreateDul_Node(ElemType e)//创建双链表中的结点
{
DuLNode *p = (DuLNode*)malloc(sizeof(DuLNode));
p->data = e;
p->prior = NULL;
p->next = NULL;
return p;
}
void ListInsert_DuL(DuLinkList *L,int i,DuLNode *New_node)//双链表插入函数
{
if(NULL == *L){
*L = New_node;
return;
}
DuLNode *p = *L;
int j = 0;
while(j<(i-1)&& p){
p=p->next;
}
New_node->prior = p->prior;
p->prior->next = New_node;
New_node->next = p;
p->next = New_node;
}
void Dul_Traverse(DuLinkList *L){
DuLNode *p = (*L)->next;
while(p){
printf("<--%d-->",p->data);
p = p->next;
}
}
int main()
{
DuLinkList Dul_HeadA=NULL;
InitDul_Node(&Dul_HeadA);
printf("Insert Sample nodes:\n");
ListInsert_DuL(&Dul_HeadA,1,CreateDul_Node(10));
/*int i;
int a[] = {11,54,25,18,36};
for(i=0;i<5;i++){
ListInsert_DuL(&Dul_HeadA,1,CreateDul_Node(a[i]));
}*/
Dul_Traverse(&Dul_HeadA);
return 0;
}