ps: 大四跨考自学数据结构 权当笔记本 如有错误 可在评论区指正
双链表的初始化
typedef struct DNode{
Elemtype data;
struct DNode *prior,*next;
}DNode,*DLinkList;
初始化双链表
bool InitDlinkList(DLinkList &L)
{
L=(DNode *)malloc(sizeof(DNode));
if(L == NULL)
return false ;
L->next = NULL;
L->prior = NULL;
return true;
}
插入(后插)
在p节点后插入s节点
bool InsertNextDNode(DNode *p,DNode *e)
{
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;
return true;
}
删除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;
}
双链表的遍历要注意 不想对头节点进行操作时可以用while(p->prior!=NULL)作为条件