-1

質問ばかりで申し訳ありませんが、この機能は私に多くの問題を引き起こしています。ほぼ完成しましたが、最後のバグが 1 つあります。この関数のポイントは、1 日 1 回、3 人の生徒をポップすることです。その日の 1 つが完了すると、次の日に移動し、次の 3 つが表示されます (次のキュー リストに移動する可能性があります)。私の num2 は日を表し、3 人の学生が終了するたびに、日を 1 ずつ増やします。

プログラムを実行すると、奇妙な結果が得られます。同じ Queue リストにとどまると、その日は問題なく増加しますが、ジャンプすると、最初の増加で動かなくなります。例:

2 つのキュー リストがあります

1 番目のキュー リスト: Rachel、Ed、Amy、Matt 2 番目のキュー リスト: John、Daniel、Nick

結果:

Day1: レイチェル、エド、エイミー

2日目:

マットは最後の生徒です... ジョン、ダニエル、

2日目:

ニックは最後の生徒です..

なぜこれが起こっているのかについてのアイデアはありますか?

主な機能

    int s = 0;
    int d = 1;
    cout<<"How many Student do you currently have appointments with? "<<endl;
    cin>>s;
    cout<<"What day would you like to start seeing students?"<<endl;
    cin>>d;
    cout<<"Day "<<d<<endl;


    s = priority1->enqueue(s,d);
    s = priority2->enqueue(s,d);
    s = priority3->enqueue(s,d);
    s = priority4->enqueue(s,d);

キュー関数呼び出し

int enqueue(int x, int& m)
{
    n->pop_front(x,m);
}

LinkList Pop_front 関数

int pop_front(int x, int& m)
    {
        int num = x;
        int num2 = m;
        string value;
        while(front != NULL)
            {   
                if(num == 3)
                {
                    num = 0;
                    num2++;
                    cout<<endl<<endl<<"Day "<<num2<<endl;
                }
                while(num<3)
                {
                    Node *temp = front;
                    if(front->next)
                    {   value = front->name;
                        front = front->next;
                        front->prev = NULL;
                        size--;
                        delete temp;
                        cout<<value<<", "<<endl;
                        num++;
                        continue;
                    }
                    cout<<endl;
                    if(front->next == NULL)
                    {
                        value=front->name;
                        front = NULL;
                        back = NULL;
                        delete temp;
                        size--;
                        cout<<value<<", is the last student in this priority Queue list"<<endl;
                        num++;
                        return num;
                    }
                }
}
    }
4

1 に答える 1