zoukankan      html  css  js  c++  java
  • 链表倒置

    链表结构:
    struct
    Node { Node *next; int num; };

    倒置算法:

    Node* reverse(Node *root)
    {
      if(root == NULL || root->next ==NULL)return root; Node
    *p1,*p2,*p3; p1 = root; p2 = p1->next; p3 = p2->next;//p3用来保存p2后面的链表,以免p1、p2倒置后,链表丢失。 p1->next = NULL; while(p3!=NULL) { p2->next = p1; p1 = p2; p2 = p3; p3 = p3->next; } p2->next = p1; return p2; }

    思路:

    1、指针p1 、p2、p3分别指向前三个节点;

    2、将p1置为尾节点,p1->next = NULL;

    3、进入while循环,如果p3不为空,将p2的下一个节点设置为p1(倒置p1、p2顺序),然后3个指针分别后移一个节点。

    4、如果p3为空,导致p1、p2

    5、返回p2为根节点。

  • 相关阅读:
    对象
    语句
    表达式和运算符
    类型、值和变量
    词法结构
    javac命令详解(下)
    javac命令详解(上)
    jar 查找多jar包中类的办法
    find -exec
    java编译相关问题总结
  • 原文地址:https://www.cnblogs.com/lipeil/p/2738923.html
Copyright © 2011-2022 走看看