#include<stdio.h>
#include<stdlib.h>
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->prior=NULL; //头结点的prior永远指向NULL
L->next=NULL; //头结点之后无结点指向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结点有后继结点
s->prior=p;
p->next=s;
return true;
}
//删除p结点的后继结点
bool DeleteNextDNode(DNode* p){
if(p==NULL)return false;
DNode* q=p->next; //找到p的后继结点
if(q==NULL)return false; //p没有后继
p->next=q->next;
if(q->next!=NULL)q->next->prior=p;//q结点不是最后一个结点
free(q); //释放结点空间
return true;
}
int main(){
DLinkList L;
InitDLinkList(L);
free(L);
}
数据结构(双链表增删)
最新推荐文章于 2024-10-06 11:48:50 发布