zoukankan      html  css  js  c++  java
  • 链表反转(c++描述)

    问题是给定一个链表的头节点,要求把链表反转,输出所有元素。这里讲下怎么反转。

    链表如图所示:

    首先定义一个pre和一个tmp都为空

    ListNode* tmp=NULL;
    ListNode* pre=NULL;

    第二步,把头节点的原next指针放入tmp中

    第三步,使next指针指向pre,这时候链表是这样的

    第四步,把pHead赋值给pre

    第五步,把tmp中存储的原next指向的值赋给pHead,于是链表就变成这样

    从这个过程可以看出phead与pre各自往前走了一步,以此类推直到phead到达表尾,最后再执行一次结束循环。

    ==================================================================================================

    代码如下:

     1 /*
     2 struct ListNode {
     3     int val;
     4     struct ListNode *next;
     5     ListNode(int x) :
     6             val(x), next(NULL) {
     7     }
     8 };*/
     9 class Solution {
    10 public:
    11     ListNode* ReverseList(ListNode* pHead) {
    12         if(pHead==NULL){
    13             return NULL;
    14         }
    15         ListNode* tmp=NULL;
    16         ListNode* pre=NULL;
    17         while(pHead){
    18             tmp=pHead->next;
    19             pHead->next=pre;
    20             pre=pHead;
    21             pHead=tmp;
    22         }
    23         return pre;
    24     }
    25 };
  • 相关阅读:
    10.28
    10.25
    10.21
    移动第七次作业
    移动第六次作业
    移动第五次作业
    移动第四次作业
    移动第3次作业
    移动第二次作业
    移动第一次作业
  • 原文地址:https://www.cnblogs.com/cracker13/p/8547183.html
Copyright © 2011-2022 走看看