2017-01-31 100 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"); 

} 

控制台屏幕在进入第一个元素后消失,我找不出错误在哪里。

+2

使用[调试器](https://ericlippert.com/2014/03/05/how-to-debug - 小程序/)来找出问题所在。 – nwp

+0

dibugger运行程序,但程序在执行期间停止。如何进行? –

+1

***如何继续?***您逐行执行代码,让您的调试器逐行查看每个步骤的变量,直到您的代码执行一些您并不期望的操作。 – drescherjm

回答

0

insert_in_queue()功能,ptr分配内存后,请务必使用

ptr->next=NULL; 
+0

另外,考虑在'node'中添加一个构造函数,它总是让'next'为空,这样你就不会忘记。 – user4581301