zoukankan      html  css  js  c++  java
  • 算法导论10.27习题解答(单链表逆转)

    CLRS 10.2-7 :
    在O(n)时间内对给定的单链表进行逆转。

    解法:

    这题没什么技巧,就是将指针的指向进行改变即可。

    #include <iostream>
    usingnamespace std;

    //很简单的Node 和 List
    class Node
    {
    public:
      Node
    * next;
      int data;

      Node();
      Node(
    int d);
    };

    class List
    {
    public:
      Node
    * first;

      List();
      void insert(int d);
    };

    int main()
    {
      int K =5;
      List
    * list =new List();

      for(int i =0; i <5; i++)
      {
        list
    ->insert(i);
      }

      Node
    * before = list->first;
      Node
    * after = before->next;
      before
    ->next = NULL;
      while(after)
      {
        //交换指针
        Node* temp = after->next;
        after
    ->next = before;
        before
    = after;
        after
    = temp;
      }
      //把最后的before赋给list->first
      list->first = before;

      Node
    * x = list->first;
      while(x)
      {
        cout
    <<x->data<<endl;
        x
    = x->next;
      }
      return0;
    }

    Node::Node()
    {
      next
    = NULL;
    }

    Node::Node(
    int d)
    {
      data
    = d;
      next
    = NULL;
    }

    List::List()
    {
      first
    = NULL;
    }
    //插入节点的操作
    void List::insert(int d)
    {
      Node
    * node =new Node(d);

      if(first == NULL)
        first
    = node;
      else
      {
        Node
    * temp = first->next;
        Node
    * prev = first;
        while(temp != NULL)
        {
          prev
    = temp;
          temp
    = temp->next;
        }
        prev
    ->next = node;
      }
    }
  • 相关阅读:
    每日算法-02旋转矩阵
    广搜
    每日算法-01
    洛谷P1162填涂颜色
    队列
    知识网站复习
    mysql索引底层的数据结构和算法
    Java中的类反射
    常见的加密方式
    计算机数制和运算的一点总结.
  • 原文地址:https://www.cnblogs.com/null00/p/2065056.html
Copyright © 2011-2022 走看看