2017-01-31 101 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