C++ 指针错误队列

C++ 指针错误队列,c++,queue,C++,Queue,嗨。我有一串数字,如上图所示。我想使用最少数量的队列按降序打印它们。输入的行为也类似于队列 我的想法是从右边取第一个数字并创建一个队列。然后,检查每个数字是否大于任何队列中的第一个数字。如果是,则将其添加到该队列中。如果不是,则创建一个新队列并重复该过程 我编写了以下代码: #include<iostream> using namespace std; struct Nod{ int info; Nod *urm; }; void push(Nod *&p

嗨。我有一串数字,如上图所示。我想使用最少数量的队列按降序打印它们。输入的行为也类似于队列

我的想法是从右边取第一个数字并创建一个队列。然后,检查每个数字是否大于任何队列中的第一个数字。如果是,则将其添加到该队列中。如果不是,则创建一个新队列并重复该过程

我编写了以下代码:

#include<iostream>
using namespace std;

struct Nod{
    int info;
    Nod *urm;
};

void push(Nod *&p, Nod *&u, int info){
    if (p == NULL)
    {
        p = new Nod;
        p->info = info;
        u = p;
        u->urm = NULL;
    }
    else
    {
        Nod *q = new Nod;
        q->info = info;
        q->urm = p;
        p = q;
    }
}

void pop(Nod *&p, Nod *&u)
{
    if (p != NULL){
        Nod *q = p;
        if (q->urm != NULL){
            while (q->urm->urm != NULL)
            {
                q = q->urm;
            }
            delete u;
            u = q;
            u->urm = NULL;
        }
        else
            p = NULL;
    }
    else
        cout << "Empty Queue";
}

void print(Nod *p)
{
    cout << endl;
    Nod *q = p;
    while (q != NULL)
    {
        cout << q->info << " ";
        q = q->urm;
    }
    cout << endl;
}

int main()
{
    Nod *p, *u;
    p = u = NULL;

    Nod *p1[100];
    Nod *u1[100];

    char * s;
    s = new char[100];
    cin >> s;

    push(p1[0], u1[0], s[(unsigned)strlen(s) - 1]-'0');

    for (int i = (unsigned)strlen(s) - 2; i >= 0; i--){
        int k = 0; int ok = 0;
        while (p1[k] != NULL)
        {
            if (s[i]-'0' >= p1[k]->info)
            {
                push(p1[k], u1[k], s[i]-'0');
                ok = 1;
                break;
            }
            k++;
        }
        if (ok == 0)
            push(p1[k], u1[k], s[i]-'0');
    }

    //test printing first 3 lines.
    print(p1[0]);
    print(p1[1]);
    print(p1[2]);
    system("Pause");
}

您从未初始化p1和u1数组,因此在测试它们时不能保证指针为空。简单地为您使用有什么不对?@Eelke非常感谢!我不知道我忘记初始化指针了。现在它工作了!
if (s[i]-'0' >= p1[k]->info)