zoukankan      html  css  js  c++  java
  • 头插法将单链表原地逆转

    如果你看到标题就知道我在说什么,那么出门左拐,自己动手写一下伪代码。
    只有自己亲手写出和画出,才能更好的掌握。

    现在有一个链表,Head指向头

    然后使用temp保存Head中原来含有的结点的第一个结点,此时p指向第一个待插入结点

    此时将head尾部置空

    将 p 加入head头部,然后 p 后移一位。往复多次,直到 p 空

    1     def reverse(self):              #头插法原地逆转链表
    2         p = self.head               #p指向工作结点
    3         self.head = None            #将头指针看做一个空空的干净的头指针
    4         while p:
    5             temp = self.head        #保存头指针已经保存了的后续结点的第一个结点
    6             self.head = p           #将新结点头插法接到头指针上  之后的步骤不能反过来哦,否则结果不是预期的结果
    7             p = p.Next              # STEP 1 :先将工作指针 p 后移到下一位
    8             self.head.Next = temp   # STEP 2 :然后再把原来的 head 的后面的结点 temp 连接到新加入的结点后面
    9 #注:STEP 1 和STEP 2 务必不要颠倒  因为如果先执行 self.head.Next = temp 那么 p 的next就会变成 temp 是吧(你品品)
  • 相关阅读:
    冒泡排序&快速排序
    1252. Cells with Odd Values in a Matrix
    位运算小结
    832. Flipping an Image
    1812. Determine Color of a Chessboard Square
    10、属性、构造函数与析构函数
    09、封装与类成员
    07、面向对象简介
    06、C#异常处理
    03、运算符
  • 原文地址:https://www.cnblogs.com/Halo-zyh-Go/p/12363058.html
Copyright © 2011-2022 走看看