☰
数据结构|第二章 线性表4
2026/10/14 3:26:19 网站建设 项目流程

目录

2.3线性表的链式表示

2.3.3双链表


2.3线性表的链式表示

2.3.3双链表

1.定义初始化

typedef struct DNode{ int 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; }

2.判空

bool empty(DLinkList L){ if(L->next==NULL) { return true; } else return false; }

3.插入(在结点 *p后插入新结点 *s)

//p结点后插入s结点 bool insertNextDNode(DNode *p,DNode *s) { if(p==NULL || s==NULL)//参数非法 { return false; } s->next=p->next;//表示让s指向p->next所指向的地方 if(p->next!=NULL) p->next->prior=s;//表示让p的后继节点的前驱指针指向s s->prior=p;//表示让s的前驱指针指向p p->next=s;//表示让p的后继节点指向s return true; }

4.删除(删除p后面的q)

//删除p后面的q bool deleteNextNode(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不是最后一个结点 q->next->prior=p; } free(q); return true; }

5.遍历

while(p!=NULL){ p=p->Next;//后向遍历 } while(p!=NULL){ p=p->prior;//前向遍历 } while(p->prior!=NULL){ p=p->prior;//前向遍历,跳过头结点 }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询