我一直在处理插件删除和显示的队列操作的类!如果您想尝试,请继续使用代码!!这段代码不适用于自我引用指针!!
#include <iostream>
#include <stdlib.h>
using namespace std;
class queue
{
public:
static int *front;
static int *rear;
int info[5];
public:
void reset()
{
front=&info[0];
rear=&info[0];
}
void insert_rear(int item)
{
if(rear>&info[4])
{
cout<<"Queue Overflow !!!"<<endl;
return;
}
++(*rear)=item;
return;
}
void delete_front()
{
if(front<&info[0])
{
cout<<"Queue Underflow !!!"<<endl;
return;
}
cout<<"The deleted item is : "<<(*front)--<<endl;
if(front<rear)
{
reset();
}
return;
}
void display()
{
int *i;
for(i=front;i<=rear;i++)
{
cout<<*i<<endl;
}
return;
}
};
void main()
{
queue database;
int choice,item;
database.reset();
for(;;)
{
cout<<"1:Insert 2:Delete 3:Display 4:Exit"<<endl;
switch(choice)
{
case 1: cout<<"Enter the item you want to insert : "<<endl;
cin>>item;
database.insert_rear(item);
break;
case 2: database.delete_front();
break;
case 3: database.display();
break;
default:cout<<"Exiting !!"<<endl;
exit(0);
}
}
}
这不是使用类来进行队列的基本操作!! Plz帮帮我!!
答案 0 :(得分:1)
这是一个错误
static int *front;
static int *rear;
int info[5];
应该是
int *front;
int *rear;
int info[5];
这太混乱了(我认为也是错误的)
++(*rear)=item;
以简单的方式做到这一点
*rear = item;
++rear;
中的逻辑
void delete_front()
{
if(front<&info[0])
{
cout<<"Queue Underflow !!!"<<endl;
return;
}
cout<<"The deleted item is : "<<(*front)--<<endl;
if(front<rear)
{
reset();
}
return;
}
错误应该是
void delete_front()
{
if(front == rear)
{
cout<<"Queue Underflow !!!"<<endl;
return;
}
cout << "The deleted item is : "<< *front <<endl;
++front;
if(front == rear)
{
reset();
}
}
答案 1 :(得分:1)
在您撰写++(*rear)
和(*front)--
的地方,请尝试使用
分别为*(++rear)
和*(front--)
- 这样,您将递增/递减指针(如您所愿),而不是指向的值