定义双链表的结构体类型
typedef struct DLNode{
int data;
struct DLNode *next;
struct DLNode *prior;
}DLNode;
采用尾插法创建双链表:
int finddelmerge(DLNode *&A,int a[],int n)
{
DLNode *p,*s;
int i'
A=(DLNode *)malloc(sizeof(DLNode))
A->prior==NULL;
A->next==NULL;
p=A;
for(i=0;i<n;++i)
{
s=(DLNode *)malloc(sizeof(DLNode));
s->data=a[i];
p->next=s->prior;
s->prior=p->next;
p=s;
}
p->next=NULL;
}
查找结点的算法(成功返回结点指针,失败返回NULL) 注意函数的返回值类型
DLNode * finddelmerge(DLNode *A,int e)
{
DLNode *p;
p=A;
while(p->next!=NULL)
{
if(p->data==x)
break;
else
p=p->next;//找不到就后移
}
return p;
}
插入结点,在双链表中p所指的结点之后插入一个结点q
q->next=p->next;
q-prior=p;
p->next=q;
q->next->prior=q;
删除结点的算法,要删除p结点的后继结点
DLNode *p,*q;
q=p->next;
p->next=q->next;
q->next->prior=p;
free(q);