【数据结构】单链表的倒置

前端之家收集整理的这篇文章主要介绍了【数据结构】单链表的倒置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

关于单链表的倒置:

在面试过程中,笔试中会考到许多数据结构的面试题,我们来看一个不是很难的单链表逆置,许多笔试题中都有可能出现这个单链表的逆置。

在这些题中,往往是不存在哨兵位,而给的是一个头指针。什么是哨兵位呢。

哨兵位:创建一个头结点,头结点中不存任何数据,将头结点的_next指向单链表中的第一个数据节点。

这样也许会带来很多便利,面试中往往是不给予头结点的。

给的是一个头指针。我们来看一下吧=。=:

单链表结构体:

typedefintDataType;

typedefstructLinkNode
{
	DataType_data;
	structLinkNode*_next;
}LinkNode,*PLinkNode;

单链表逆置的算法代码

voidReverseLink(PLinkNode&pHead)
{
PLinkNodetemp=pHead;
PLinkNodecur=NULL;
pHead=NULL;
while(temp)
{
	cur=temp->_next;
	temp->_next=pHead;
	pHead=temp;
	temp=cur;
}
}

单链表的算法思维:

第一次:

wKioL1Y53anxdlc5AADV7wc9Aro793.jpg

创建2个指针。一个保存当前指针的下一个。

cur=temp->_next;

一个保存当前所需要逆置的指针:

PLinkNodetemp=pHead;
temp=cur;

首先取出第一个指针,然后将temp->_next置为NULL。

	temp->_next=pHead;//此时pHead已经为NULL

然后将pHead指向temp:

	pHead=temp;

最后将temp指向下一个将要逆置的指针:

	temp=cur;

第二次:

wKiom1Y53Wrz_04tAADlaNPV7NE642.jpg


单链表的逆置大体思路就是:

  1. 一个指针保存下一个,另外一个指针保存当前,

  2. 将当前的指针取出来,头指针指向它,

  3. 然后就是不断往下取进行头插。

这就是单链表逆置的思想,只用遍历一次链表就可以完成。

QWQ

原文链接:https://www.f2er.com/datastructure/382582.html

猜你在找的数据结构相关文章