You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组实现5个Linked List Queue打印队列,代码无法添加任务求排查

你的打印队列代码问题分析与修复

让我帮你排查下这段代码的问题,几个关键错误导致你没法正常向队列添加打印任务:

核心问题清单

  • 参数传递与返回类型不匹配:
    你调用insertNodes(i, num)时,第一个参数传的是整数i,但insertNodes函数的第一个参数要求是node*类型的头指针,这直接导致类型错误;另外函数定义的返回类型是int,但你实际需要返回更新后的链表头指针node*,类型不匹配会丢失头节点地址,后续根本找不到队列的入口。

  • 链表插入逻辑致命错误:
    在else分支里,你写了Ptr->next = Ptr;,这会把当前遍历到的节点的next指向自己,形成循环链表,完全没有把新创建的aNode添加到链表末尾,正确的写法应该是Ptr->next = aNode;。

  • 冗余全局变量与未初始化数组:
    你定义的全局head变量完全多余,每个队列的头节点应该由数组A的元素来维护;另外数组A声明后没有初始化每个元素为NULL,初始时都是野指针,会导致判断队列是否为空的逻辑失效。

修正后的完整代码

#include "stdafx.h"
#include <iostream>
using namespace std;

struct node {
    float value;
    struct node *next;
};

// 每个队列的头指针数组,初始化每个元素为NULL
node* A[5] = {NULL};

// 修正返回类型为node*,参数为对应队列的头指针和要插入的值
node* insertNodes(node *head, int value) {
    node *aNode, *Ptr;
    aNode = new node;
    aNode->value = value;
    aNode->next = NULL;

    if (head == NULL) {
        head = aNode;
    } else {
        Ptr = head;
        while (Ptr->next != NULL) {
            Ptr = Ptr->next;
        }
        // 将新节点挂到链表末尾,而不是形成循环
        Ptr->next = aNode;
    }
    return head;
}

int _tmain(int argc, _TCHAR* argv[]) {
    int num;
    for (int i = 0; i < 5; i++) {
        cout << "Insert number for queue " << i << ": ";
        cin >> num;
        // 传入对应队列的当前头指针,接收返回的新头指针
        A[i] = insertNodes(A[i], num);
    }

    // 可选:测试打印每个队列的内容,验证是否插入成功
    cout << "\nAll queues content:\n";
    for (int i = 0; i < 5; i++) {
        cout << "Queue " << i << ": ";
        node* temp = A[i];
        while (temp != NULL) {
            cout << temp->value << " ";
            temp = temp->next;
        }
        cout << endl;
    }

    return 0;
}

修正说明

  1. 初始化数组A的每个元素为NULL,确保每个队列初始为空;
  2. 修正insertNodes的返回类型为node*,并且调用时传入对应队列的当前头指针A[i],用返回值更新该队列的头指针;
  3. 修复链表插入的逻辑,把新节点正确挂到链表末尾;
  4. 移除了冗余的全局head变量,让数组A的每个元素独立维护对应队列的头节点;
  5. 增加了测试打印逻辑,方便你验证每个队列的内容是否正确插入。

内容的提问来源于stack exchange,提问作者user9327397

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:02:42