• 链表反转




    题目链接

    PAT提交结果

    PAT提交代码

    github链接



    主要步骤以及特别注意事项:

    • 先构造一个结构体,内有成员addressdatanextad,分别代表当前结点的地址,结点存储的数据,和下一个结点的地址。
    • 创建头指针,输入数据,按照输入的数据,新建结点,先把输入的结点构成一个链表。特别注意:由于输入数据的次数可能较多,为了避免超时,建议用scanf输入。
    • 把所成的链表结点按照地址进行排序。
    • 特别注意:由于输入的结点可能会有不满足要求的,应把它们移除链表,即结点的nextad如果是-1,那么它的下一个应指向NULL
    • 根据k的大小,对链表进行反转。
    • 反转后,再把各结点的nextad进行重新赋值,使其等于下一个结点的address。特别注意:最后一个节点的nextad应该设为-1
    • 最后输出各个节点。特别注意:由于输入的地址是五位整型数,所以如果地址的有效数字的位数比五小,就会使输出的地址与原来不同。
      比如:输入00001 123 03241,那么输出就会变成1 123 3241,就会出错。应该在输出时控制输出的宽度为五位,并且不足的要补0
      可以用cout<<setfill('0')<<setw(5)<<地址来实现,要记得加上#include<iomanip>。但是最后一个地址-1应该单独输出,不必补0


    补充:

    • 在使用指针时,如果一个指针被多次使用,在使用前,一定要把指针重新指向。
    • 在搜索结点时,一定要记住加上指针的后移操作。


  • 相关阅读:
    访问者模式:男人女人区别
    享元模式:开发多个网站实例
    中介者模式:联合国实例
    职责链模式:加薪实例
    命令模式:烤羊肉串实例
    桥接模式:手机软件实例
    单例模式
    组合模式:公司管理系统实例
    备忘录模式:游戏进度实例
    适配器模式:篮球翻译实例
  • 原文地址:https://www.cnblogs.com/jiuweilinghu/p/5510150.html
Copyright © 2020-2023  润新知