1

我一直在研究与插入删除和显示的队列操作一起使用的课程!如果您想尝试,这是代码!此代码不适用于自引用指针!

#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);
    }
}

}

这不是使用类的队列的基本操作!请帮帮我!

4

2 回答 2

1

++(*rear)在您编写and的地方,分别(*front)--尝试使用 *(++rear)and *(front--)- 这样,您将递增/递减指针(如您所愿),而不是它指向的值

于 2013-10-04T04:36:55.283 回答
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();
    }
}
于 2013-10-04T04:33:02.130 回答