0

リンクリストを使用してキューを実装するためのコードを作成しましたが、理解できないバグがいくつかあります。アイテムを最初にキューにプッシュすると、検索は機能しますが、2番目のアイテムをプッシュしようとすると、ランタイムエラーが発生します。手伝ってくれませんか。どうもありがとうございます!コードは次のとおりです。

#include<iostream>
using namespace std;
template<typename T>
struct Node{
    T data;
    Node* next;
    Node(T d, Node* n=NULL): data(d), next(n){}
};


template<typename T>
class myqueue{
    private:
        Node<T> * first;
        Node<T> * last;
    public:
        myqueue(){}
        void push(T da){
            if(first==NULL) {
                first=new Node<T>(da);
                last=first;
            }
            else {

                last->next=new Node<T>(da);
                last=last->next;

                }
        }   
        void pop(){
          if(last!=NULL){
            Node<T> * temp=first;
            first=first->next;
            delete temp;
          }
        }
        void front(){
           if(first!=NULL) cout<< first->data;
        }
        bool isempty(){
            return last==NULL;
        }
};

int main(){
    myqueue<int> q;
    q.push(1);
    q.push(2);
    q.front();
    /*
    q.push(3);
    q.push(4);
    q.push(5);
    cout<<q.front();
    */

}


compile error: runtime error    
4

1 に答える 1

4

firstとポインタlastは初期化されていないため、未定義の動作があります。メンバー初期化リストを使用してそれらを初期化します。

myqueue::myqueue() : first(NULL), last(NULL) {}
于 2013-03-26T19:26:01.237 に答える