反转链表
来源:互联网 发布:结婚摄像后期制作软件 编辑:程序博客网 时间:2024/05/18 09:29
解一:
将两个节点逆序非常容易,但是大于两个的时候 就需要考虑:如何在逆序的时候注意死循环:即只有当cur和tmp指的都是当前节点的时候,cur ->next = prev ,就会发生死循环, 而偏偏这个情况很容易发生
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { if (pHead == NULL) { return NULL; } else if(pHead == NULL) { return pHead; } ListNode* cur = pHead; ListNode* prev = NULL; ListNode* tmp = pHead->next; while(tmp) { prev = cur; cur = tmp; tmp = tmp ->next; cur ->next = prev; } pHead->next= NULL; pHead = cur; return pHead; }};
解二:
使用一个栈来解决问题,C++
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead==NULL||pHead->next == NULL) { return pHead; } ListNode * p=pHead; ListNode * newHead; stack<ListNode *> stack1; while(p->next!=NULL) { stack1.push(p); p=p->next; } newHead = p; while(!stack1.empty()) { p->next=stack1.top(); p=p->next; stack1.pop(); } p->next=NULL; return newHead; }};
0 0
- 链表反转
- 反转链表
- 单向链表反转
- 链表反转:
- 链表的反转
- 链表反转
- 反转单向链表
- 链表反转
- 单向链表反转
- 单向链表反转
- 链表的反转
- 链表反转
- 反转链表
- 链表反转
- 链表反转
- 链表反转
- 链表反转
- 链表的反转
- Android简易实战教程--第二话《两种进度条》
- 1014. 福尔摩斯的约会 (20) PAT 乙级
- DNS 原理入门
- 【Android进阶】SpannableString与SpannableStringBuilder使用
- 矩阵
- 反转链表
- ActiveMQ源码分析(三):聊聊broker到broker的通讯
- 【每天学一点】JAVA Servlet相关
- 阿莲,你能不能够接受 那个从前的for
- Android项目:proguard混淆之常见问题及解决方法汇总
- Quartz之 JobStore
- Java类集框架之HashMap(JDK1.8)源码剖析
- 线上Mafka集群网卡打爆原因分析及解决方案
- 关于“用户密码”的一些原理和设置建议