链表、队列、栈的相关应用(一)链表的回文结构
来源:互联网 发布:linux下如何查找文件 编辑:程序博客网 时间:2024/05/17 23:36
最近在对学习的链表、队列、栈等进行学习与总结,将遇到的题目总结出来,供大家交流
知识点:链表、栈
题目:
对于一个链表,,判断其是否为回文结构。
给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:
bool chkPalindrome(ListNode* A) {
}
};
思路:
1.利用快慢指针,快指针每次进两格,慢指针每次进一格,当快指针指到NULL末尾时,慢指针指到中间位置
2.逆序指针
3.从头尾指针进行比较
代码:
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class PalindromeList {public: bool chkPalindrome(ListNode* A) { // write code here if(A->next == NULL)//只有一个元素为回文 return true; else if(A == NULL)//空元素不是回文 return false; //快慢指针找出中间节点 ListNode *fast = A;//均指向头结点 ListNode *slow = A; ListNode *temp, *cur; while(fast->next != NULL && fast != NULL) //保证fast的下下个节点不为空 { // temp = slow; // temp 是保存slow的前一个节点,即第一部分的最后一个节点 fast = fast->next->next; slow = slow->next;// 为奇数,slow为中间节点,偶数时,slow为第二部分第一个节点 }//跳出程序的时候slow为中间节点 cur = slow->next; slow ->next = NULL; //反转链表 while(cur!=NULL) { temp = cur->next; //mid,cur,temp三个指针操作反转链表。 cur->next = slow; slow = cur; cur = temp; } while(A != NULL && slow != NULL) { if(A->val == slow->val) { A = A->next; slow = slow->next; } else return false; } return true; }
思路2:复制链表A,将链表中的元素通过push压入栈,再利用出栈,比较stack.top()(尾部元素) 和链表A(头部元素)是否相等
代码:
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class PalindromeList { public: bool chkPalindrome(ListNode* A) { if(A==NULL) return true; ListNode *B ; B = A; stack<int> st; while(B != NULL) { st.push(B->val); B = B->next; } while(A != NULL) { if(st.top() == A->val) { st.pop(); A = A->next; } else return false; } return true; }};
阅读全文
2 0
- 链表、队列、栈的相关应用(一)链表的回文结构
- 链表15:链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构练习
- c++-链表的回文结构
- 链表、队列、栈和字符串的相关应用(三)字符串的旋转
- 链表、队列、栈和字符串的相关应用(四)字符串的替换
- 链表、队列、栈的相关应用(二)链式A+B
- 循环队列的相关操作(顺序结构)
- 回文的java实现(栈和队列的配合)
- 栈的相关应用(一)--数组的反向输出
- 2017.11.29 python学习笔记
- 如何让idea文件夹目录结构清晰一些
- centos7 关闭防火墙
- 2017hdu新生赛 1002身份证验证
- 关于共识算法
- 链表、队列、栈的相关应用(一)链表的回文结构
- 数据库语句记录
- [bzoj 2190--SDOI2008]仪仗队
- 中文分词
- spring -squartz 定时任务
- CVPR2017有哪些值得读的Image Caption论文?
- Centos6安装Caffe
- 静态变量、局部变量、实例变量
- Java多线程工具包java.util.concurrent---目录