剑指offer 反转链表

来源:互联网 发布:java中的多态是什么 编辑:程序博客网 时间:2024/06/05 19:23

对于链表的反转,同样需要考虑一些问题:

  • 代码的鲁棒性,输入链表头指针是否为NULL
  • 修改链表中指针的指向时,千万不要发生链表断裂的情况,导致下一个结点丧失
  • 仔细考虑问题解决的逻辑,不要急于下笔
  • 写完代码之后花时间进行简单的测试用例(单元测试),确保万无一失
#include <iostream>  #include <string>  #include <vector>  #include <stack>using namespace std;  typedef int datatype;struct Node{datatype value;Node* Next_Node;};//反转链表//这样做修改了传入的链表Node* Reverse_List(Node* first){Node* m_Node = first;Node* previous_Node = nullptr;Node* Reverse_Head = nullptr;//传入参数鲁棒性考虑if (first == nullptr){return nullptr;}//只有一个结点的情况if (first->Next_Node == nullptr){Reverse_Head = first;return Reverse_Head;}while (m_Node != nullptr){Node* Next_Node = m_Node->Next_Node;if (m_Node == nullptr){Reverse_Head = m_Node;}m_Node->Next_Node = previous_Node;previous_Node = m_Node;m_Node = Next_Node;}}void main()  {     system("pause");}  


原创粉丝点击