2017-01-31 17 views
0

キューはリンクされたリストを使用して実装されていますが、プログラムが動作していない場合は、間違いがありますか?リンクリストを使用したキューの実装

#include<iostream> 
#include<conio.h> 

using namespace std; 

struct node 
{ 
    int data; 
    node *next; 
}; 


class queue 
{ 
    node *front, *rear; 
public: 
    queue() 
    { 
     front=rear=NULL; 
    } 
    void insert_in_queue(); 
    void delete_in_queue(); 
    void display_queue(); 
}; 

void queue:: insert_in_queue() 
{ 
    node *ptr; 
    ptr= new node; 
    cout<<"\nInsert element\n"; 
    cin>>ptr->data; 

    if(rear==NULL) 
     front=rear=ptr; 
    else 
    { rear->next=ptr; 
     rear=ptr; 
    } 
} 

void queue:: delete_in_queue() 
{ 
    node *ptr; 
    ptr=front; 
    if(rear==NULL) 
     cout<<"\nUnderflow!!\n"; 
    else if(front==rear) 
     front=rear=NULL; 
    else 
     front=front->next; 
    cout<<"\nThe deleted element is:: "<<ptr->data<<"\n"; 
    delete ptr; 
} 

void queue:: display_queue() 
{ 
    node *ptr; 
    ptr=front; 
    cout<<"\nThe queue is:\n"; 
    while(ptr!=NULL) 
    { 
     cout<<"|"<<ptr->data<<"|"; 
     ptr=ptr->next; 
    } 
} 

void main() 
{ 
    queue q; 
    char ch; 
    int a; 
    ch='y'; 
    cout<<"this is dynamic que progream\n\n\n"; 
    do 
    { 
     cout<<"(1)->Insert/(2)->Delete\n"; 
     cin>>a; 
     if(a==1) 
      q.insert_in_queue(); 
     else 
      q.delete_in_queue(); 
     q.display_queue(); 
     cout<<"\nContinue?(y/n)\n"; 
     cin>>ch; 
    }while(ch=='y'); 

    cout<<"\nThe final queue is:\n"; 
    q.display_queue(); 
    system("pause"); 

} 

最初の要素を入力した後にコンソール画面が消えてしまい、間違いがどこにあるのかわかりません。 insert_in_queue()機能で

+2

を使用してください(https://ericlippert.com/2014/03/05/how-to-debug -small-programs /)を使って、何がうまくいかなかったかを調べる。 – nwp

+0

ディブガーはプログラムを実行しますが、プログラムは実行中に停止します。どうやって進める? –

+1

***どのように進めますか?***コードは、デバッガでコードごとにステップごとに段階的に変数を調べ、コードが期待していないことを実行するまで実行します。 – drescherjm

答えて

0

は、ptrにメモリを割り当てた後、[デバッガ]を使用し

ptr->next=NULL; 
+0

さらに、いつも忘れられないように常にヌル 'next'のコンストラクタを' node'に追加することを検討してください。 – user4581301

関連する問題