C ++队列没有从数组

时间:2018-02-05 21:14:38

标签: c++ arrays

我遇到了用c ++设置的队列的问题。我已经设置了代码,大部分代码都正常工作。但出于某种原因,当我从我的数组中删除一个元素并尝试显示它时,我只在中间显示了一个数组元素(数组的大小只有3)。当我添加另一个,它工作正常,但在那之后,如果我尝试删除元素或添加,没有任何显示,以显示任何被删除或添加。 任何人都可以帮助我得到它应该如何?我添加了代码,以便您可以看到我如何设置它。

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

const int MAX = 3;

class Queue
{
private:
    char ship;
    string arr[MAX];
    int head;
    int tail;


public:

Queue()
{
    head = 0;
    tail = 0;
}

void Add(string ship)
{   
    arr[tail++] = ship; 
}

void Remove()
{
    cout << endl;
    cout << "Ship ID: " << arr[head] << " has been removed from the queue!" 
<< endl;
    arr->erase(head);
    //head++;
    tail--;
}


void display()
{

    for (int i = head; i < tail; i++)
    {
        cout << arr[i] << endl;
    }
}

bool IsEmpty()
{
    if (tail-head == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool IsFull()
{
    if (tail-head == MAX)
    {
        return true;
    }
    else
    {
        return false;
    }
  }
};

int main()
{
Queue q;
string ship;

q.Add(ship = "K349, 42, 8");
q.Add(ship = "K653, 22, 6");
q.Add(ship = "D994, 60, 10");

if (q.IsEmpty())
{
    cout << "Queue is empty!" << endl;
}
else
{
    cout << "Queue is not empty!" << endl;
}

cout << endl;

q.display();
q.Remove();
q.display();

system("pause");

q.Add(ship = "F777, 26, 7");

q.display();


    q.Remove();
    q.Remove();
    q.Remove();


if (q.IsEmpty())
{
    cout << "Queue is empty!" << endl;
}
else
{
    cout << "Queue is not empty!" << endl;
}

system("pause");
return 0;
}

0 个答案:

没有答案