双向链表的知识点+例题

1.链表的种类

题中常考查以下两种:

 上一讲我们学了无头单向非循环链表,这节,让我们看一下双向链表的操作吧~

2基本操作

1,定义双向链表

 2,创建一个节点

3,初始化双链表 

 4,尾插一个节点

 5打印双向链表

 

6尾删法

 当然,在这个代码中,我们要考虑如果只有head的唯一一个节点,那我们可以检查一下,如果head->next==head,则就不尾删

代码实现:

7头插法

8 头删

void LTPopFront(LTNode* phead)
{
	assert(phead);
	assert(phead->next != head);
	LTNode* first = phead->next;
	LTNode* second = phead->next->next;
	phead->next = second;
	second->prev = phead;
	free(first);
	first = NULL;
}

9找到某个元素

10在pos位置前面插入 

void LTInsert(LTNode* pos, LTDataType x)
{
	assert(pos);
	LTNode* posprev = pos->prev;
	LTNode* newnode = CreateLTNode(x);
	//posprev  newnode pos
	newnode->next = pos;
	pos->prev = newnode;
	newnode->prev = posprev;
	posprev->next = newnode;
}

 在这个代码中,如果pos是哨兵位,那么此代码相当于尾插

让我们画个图就理解了

11销毁双向链表 

 以上就是双向链表的知识点啦~

我们学完了顺序表和链表,为了方便学习,我们来比较一下两种表吧~

好啦~我们的知识分享就到这里了~ 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值