Когда я запускаю функцию delete, она дает мне некоторое значение для мусора бесконечности. в чем проблема?моя функция DeQueue() не работает должным образом
#include<iostream>
#include<process.h>
#include<conio.h>
using namespace std;
class circularqueue
{
int arr[5];
int front,rear;
int size;
int count;
public:
circularqueue()
{
count = -1;
front=-1;
rear=-1;
size=5;
}
void display();
void enqueue(int val);
void delete_element();
bool Is_empty();
};
bool circularqueue::Is_empty(){
if(front == -1 && rear == -1){
return true;
}
else {
return false;
}
}
void circularqueue :: display()
{
int F = front;
for(count; count!=0;count--){
cout<<"-----------"<<endl;
cout<<"ID is : "<<arr[F]<<endl;
cout<<"-----------"<<endl;
F++;
if(count == (size-1)){
F=0;
}
else if(count == -1){
cout<<"Empty"<<endl;
}
}
}
void circularqueue :: enqueue(int val)
{
if(Is_empty()){
// cout<<"Queue is empty "<<endl;
++front;
++rear;
arr[rear] = val;
}
else if(front == 0 and rear == (size-1)){
cout<<"Queue is Full"<<endl;
}
else if(front==0 && rear == 0){
if(rear<=(size-1)){
arr[rear]= val;
rear = rear+1;
}
}
else if(front!=0 && rear == (size-1)){
rear=0;
arr[rear]=val;
rear =rear+1;
}
else {
arr[rear] = val;
rear=rear+1;
}
count++;
}
Когда я запускаю этот код, функция удаления не работает должным образом, скажите мне исправление.
Это дает мое какое-то значение для мусора, и это выглядит как бесконечный цикл
void circularqueue :: delete_element()
{
if(Is_empty()){
cout<<"The Queue is empty"<<endl;
}
else if(front==(size-1)){
front = 0;
}
else if(front == rear){
front = -1;
rear = -1;
}
else
{
cout<<"Number Deleted : "<<front<<endl;
front = front+1;
}
count--;
}
int main()
{
circularqueue obj;
int num;
int ch;
char ch1;
jb: cout<<" 1 - EnQUEue 2- DeQueue 3- Display"<<endl;
cin>>ch;
switch(ch){
case 1:{
cout<<"Enter Number : "<<endl;
cin>>num;
obj.enqueue(num);
cout<<"Return to Main Menu: "<<endl;
cin>>ch1;
if(ch1=='Y'|| ch1=='y'){
system("cls");
goto jb;
}
break;
}
case 2:{
obj.delete_element();
cout<<"Return to Main Menu: "<<endl;
cin>>ch1;
if(ch1=='Y'|| ch1=='y'){
system("cls");
goto jb;
}
break;
}
case 3:{
obj.display();
cout<<"Return to Main Menu: "<<endl;
cin>>ch1;
if(ch1=='Y'|| ch1=='y'){
system("cls");
goto jb;
}
break;
}
default :{
cout<<"Invalid entery "<<endl;
cout<<"Return to Main Menu: "<<endl;
cin>>ch1;
if(ch1=='Y'|| ch1=='y'){
system("cls");
goto jb;
}
break;
}
}
}
Не могли бы вы немного сжать вопрос? Попытайтесь указать, что вы считаете неправильным с кодом, так что другим будет легче ответить –
Пожалуйста, обновите свое сообщение с помощью [Минимального, полного и проверяемого примера] (http://stackoverflow.com/help/ mcve). –
хорошо благодаря сообщению, вам просто нужно сосредоточиться на функции удаления, я думаю, что проблема есть –