删除队列的功能

时间:2016-12-10 18:12:37

标签: c++ queue

我的队列删除功能遇到问题。请查看以下代码。

class queueType // public queueADT<Type>

{

public:

const queueType<Type>& operator=(const queueType<Type>&);

bool isEmptyQueue() const;

bool isFullQueue() const;

void initializeQueue(int);
void minusIo(int);

Type & front();

Type & back();

void addQueue(const Type& queueElement);
void addQueueFront(const Type& newElement);

void deleteQueue();

queueType(int queueSize = 100);

queueType(const queueType<Type>& otherQueue);

~queueType();

bool operator== (const queueType<Type>&);

bool operator!= (const queueType<Type>&);

void deleteBackOfQueue();

void printQueue();
void sort();

bool notin(Type f);

void shortest(int);

Type *list;
int count;
Type & any(int);

void deleteany();


private:

int maxQueueSize;


int queueFront;

int queueRear;

bool isEqual(const queueType<Type>&);

};

下面给出了我的删除队列和打印功能。

  template<class Type>

  void queueType<Type>::deleteQueue()

  { 

  if (!isEmptyQueue())

   { 


    queueFront = ++queueFront % maxQueueSize;
    count--;

  }
 else
    cout << "Cannot remove from an empty queue" << endl;



 }

以下是打印功能。     模板

void queueType<Type>::printQueue()

{

for (int i = 0; i<count; i++)

{

    cout << list[i];

}

}

我在我的主要功能中使用它如下。

void main() {

queueType<int> RQ;

RQ.addQueue(2);
RQ.addQueue(8);
RQ.addQueue(7);
RQ.addQueue(2);
RQ.addQueue(4);

RQ.printQueue();
cout << endl;

RQ.deleteQueue();
RQ.printQueue();

getchar();

}

显示以下结果。

28724
2872

我不明白为什么它从最后删除而不是从前面删除。对我来说代码似乎很好。请看一下,让我知道。

1 个答案:

答案 0 :(得分:0)

由于您的删除功能不会修改&#34; list&#34;您的打印不应该从零开始,而是从queueFront开始。实现这一目标的简单方法是替换:

cout << list[i];

使用:

cout << list[i+queueFront];

在您的打印功能中。 但是你应该考虑以某种方式修改list,同时仍然指向你需要free的内存。