Palindrome List(判断链表是否是回文链表)
题目描述:
给定一个链表的头结点,判断链表是否是回文结构。
例子:
1->2->3->2->1->NULL即为回文链表
解题思路1:
回文的结构的特点是正序和逆序的访问结果是一致的。所以第一种想法是利用栈结构来逆序链表。首先申请一个栈空间,然后遍历链表,将链表中的数据不断的压栈。然后再次遍历链表和栈,如果出现栈中的数据和链表中的数据不一致的情况即为非回文结构。
代码如下:
|
|
解题思路2:
在原先的基础上我们可以通过找到链表的中间节点,然后用先前的栈的一半空间即可实现。主要想法是我们可以找到例子中的中间节点3;然后我们可以将后半部分2->1->NULL压栈;然后从链表头部和栈顶开始遍历数据判断是否相等即可。
|
|
解题思路3:
判断回文的过程中,我们遇到的另外一个问题是对于链表我们无法逆序查找,如果可以的话我们就可以直接从链表的头部和尾部同时查找然后判断是否是回文即可。所以基于这个思路,我们可以将链表的后半段改变指针的指向后,然后从左右侧同时开始遍历判断是否相等即可。
|
|