2.双链表
实现
typedef struct DNode{
ElemType data;
struct DNode *prioi,*next;
}DNode,*DlinkList;
初始化(带头结点)
bool InitDLinkList(DLinkList &L)
{
L = (DNode *)malloc(sizeof(DNode));
if(L==NULL)
return false;
L->prior = NULL;
L->next = NULL;
return true;
}
在P结点后插入S结点
bool InsertNextDNode(DNode *p,DNode *s)
{
if(p==NULL || s==NULL)
return false;
s->next = p->next;
if(p->next != NULL)
p->next->prior = s;
p->next = s;
s->prior = p;
}
删除P结点的后继结点
bool DeleteNextDNode(DNode *p)
{
if(p==NULL)
return false;
DNode *q = p->next;
if(q == NULL)
return false;
p->next = q->next;
if(q->next != NULL)
q->next-prior = p;
free(q);
return true;
}
销毁
void DestoryList(DLinkList &L)
{
while(L->next != NULL)
DeleteNextDNode(L);
free(L);
L=NULL;
}
遍历
while(p!=NULL)
{
p = p->next;
}
while(p!=NULL)
{
p = p->prior;
}
while(p->prior != NULL)
{
p = p->prior;
}
我的博客 www.aiguitar.top