DS 0824(第二章 双链表等)

本文介绍了双链表的概念,强调了其相对于单链表的优缺点,包括带头节点双链表的初始化、插入和删除操作。接着讨论了循环链表,特别是循环双链表的特点和操作。最后,探讨了静态链表的定义、操作以及与顺序表的对比,指出其在特定场景下的适用性。
摘要由CSDN通过智能技术生成

双链表

单链表与双链表对比

  1. 单链表只有一个指向后继结点的指针,所以如果给定结点p想要找到他的前趋结点很麻烦,无法逆向检索
  2. 双链表在单链表的基础上,增加了一个指针域,指向其前趋结点。可进可退,存储密度更低
typedef struct DNode{
   					//定义双链表结点数据类型 
	ElemType data;						//数据域 
	struct DNode *prior,*next;			//前趋和后继指针 
}DNode,*DLinkList;

带头节点双链表的初始化

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->prior=NULL;						//头节点永远指向NULL 
	L->next=NULL;
	return true; 
} 

void testDLinkList(){
   
	//初始化双链表
	DLinkList L;
	InitDLinkList(L); 
	//后续代码 
}
}

//判断双链表是否为空
bool Empty(DLinkList L){
   
	if(L->next==NULL)
	return true;
	else
	return false;
} 

双链表的插入
1.在p结点之后插入s结点

bool InsertNextDNode(DNode 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值