#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
//带头指针的双链表
typedef struct DNode{
int data;
struct DNode *next,*prior;
}DNode, *DLinkList;
bool init_DInitList( DLinkList &L){
L = (DNode *)malloc(sizeof(DNode));
if(L == NULL)return false;
else {
L->next = NULL;
L->prior = NULL;
}
return true;
}
//在p节点之后插入s节点
bool insert_s(DNode *p,DNode *s){
if(p==NULL || s==NULL){
return false;
}
if(p->next){
s->next = p->next;
p->next->prior = s;
s->prior = p;
p->next = s;
}else{
s->next = p->next;
s->prior = p;
p->next =s;
}
return true;
}
// 删除p节点的后继节点
bool delete_pnext(DNode *p){
if(p->next ==NULL || p ==NULL)return false;
DNode *q = p;
q=p->next;
if(q->next != NULL){ // 如果p的后继不是最后一个节点
q->next->prior =p;
p->next = q->next;
}
q->prior = NULL;
q->next =NULL;
free(q);
return true;
}
int main(){
DLinkList L;
init_DInitList(L);
return 0;
}
双链表插入删除
最新推荐文章于 2025-11-25 10:31:53 发布
本文介绍了如何使用C语言实现带头指针的双链表,包括初始化、在节点后插入新节点以及删除指定节点的后继节点的函数。
691

被折叠的 条评论
为什么被折叠?



