【发布时间】:2021-10-19 10:12:35
【问题描述】:
我尝试使用链表实现队列。这是我写的代码。当我尝试使用 disp() 方法时,我得到一个无限循环运行。我无法在逻辑中找到错误。我不明白while(temp!=NULL) 和增加 temp 的行是如何永无止境的。
#include<iostream>
using namespace std;
struct node{
int x;
node *next;
};
class queue{
node *front,*rear;
public:
queue(){
front = NULL;
rear= NULL;
}
void enqueue(int x){
node *temp=new node;
temp->x=x;
temp->next=NULL;
if(rear==NULL){
rear=temp;
front = temp;
}
else{
rear->next=temp;
rear=temp;
}
}
int dequeue(){
node *temp =front;
if(temp!=NULL){
int x =temp->x;
temp=temp->next;
delete temp;
return x;
}
else{
return -1e7;
}
}
void disp(){
node *temp=front;
while(temp!=NULL){
cout<<temp->x<<" ";
temp=temp->next;
}
}
};
int main(){
int n;
cin>>n;
queue obj;
for(int i=0;i<n;i++){
int x;
cin>>x;
obj.enqueue(x);
}
int x,y;
cin>>x>>y;
obj.enqueue(x);
obj.enqueue(y);
obj.dequeue();
obj.disp();
}
【问题讨论】:
-
请在问题中包含输入、输出和预期输出
-
dequeue()应该删除队列中的哪个元素?总是第二个元素? -
@463035818_is_not_a_number 感谢您的解释。理解我的错误
标签: c++ algorithm linked-list queue dsa