华不注 2022-05-22 20:30 采纳率: 91.7%
浏览 15
已结题

利用链表逆序打印输入字符

利用链表逆序打印输出字符

请多指教

输入n,表示要输入多少个数
接下来输入这n个数

img

img

  • 写回答

1条回答 默认 最新

  • fortunely2 2022-05-22 21:34
    关注

    你的程序是错误的,第一个for循环里面,每次malloc一个节点,并没有对next域进行赋值,从而把链表节点串起来。到你第二个for循环里面,还没有做空指针判断就直接访问next域,而且直接调用free。

    下面是我在你程序基础上的改进:

    #include <iostream>
    using namespace std;
    
    typedef struct Node {
        int data;
        Node* next;
    
        Node() : data(0), next(nullptr)
        { }
        explicit Node(int data) : data(data), next(nullptr)
        { }
        Node(int data, Node* next) : data(data), next(next)
        { }
    }*LinkList;
    
    int main()
    {
        int n, m;
        Node dummy; // 虚拟头结点
        LinkList head = &dummy;
        Node* p;
    
        cin >> n;
        while (n-- > 0) {
            cin >> m;
            Node* node = new Node(m);
    
            // 每次插入到头结点之后首节点
            p = head->next;
            head->next = node;
            node->next = p;
        }
    
        p = head->next;
        while (p) {
            cout << p->data << ' ';
            Node* next = p->next;
            delete p;
            p = next;
        }
        cout << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月22日

悬赏问题

  • ¥20 AlphaTensor复现(有偿)
  • ¥15 (有偿)在ANSYS中 .anf文件
  • ¥45 关于#芯片#的问题:组合逻辑电路设计
  • ¥15 基与机器学习和时间序列分析预测养老服务需求趋势
  • ¥100 求连续两帧图像在水平和垂直上偏移
  • ¥15 mysql全文索引查找指定必须关键词word无效
  • ¥15 Verilog hdl密码锁设计
  • ¥35 基于python的有ssl加密传输的socket聊天室
  • ¥15 数码管亮度控制器设计
  • ¥15 kafka客户端跨网段访问,看日志提示连接的还剩内网地址,且访问不通