数据结构(双链表增删)

#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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值