一个班级内的指针

时间:2013-10-04 04:31:08

标签: c++ class pointers queue

我一直在处理插件删除和显示的队列操作的类!如果您想尝试,请继续使用代码!!这段代码不适用于自我引用指针!!

#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帮帮我!!

2 个答案:

答案 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--) - 这样,您将递增/递减指针(如您所愿),而不是指向的值