У меня менее 3 месяцев опыта кодирования, поэтому я начал использовать LeetCode, чтобы просто строить часы, работая с кодом, превышающим то, что назначено в школе.
Я работал над попыткой построения кольцевой очереди (FIFO ), и он не скомпилируется. Я получил следующую ошибку, и я в замешательстве:
решение. cpp: в функции-члене enQueue Строка 58: Char 2: ошибка: управление достигает конца недействительной функции [-Werror = return-type]}
Одна вещь: я специально получил указание НЕ использовать библиотеку std :: queue, поэтому, хотя я знаю, что это будет гораздо проще, это не вариант.
Полный код того, что я построил, следует:
class MyCircularQueue
{
private:
int* data = nullptr;
int size;
int capacity;
int front_p;
int rear_p;
public:
/** Initialize your data structure here. Set the size of the queue to be k. */
MyCircularQueue(int k)
{
data = new int[k];
size = 0;
capacity = k;
front_p = 0;
rear_p = 0;
}
/** Insert an element into the circular queue. Return true if the operation is successful. */
bool enQueue(int value)
{
if (!isFull() && isEmpty())
{
for (int i = 0; i < capacity; i++)
{
if (data[i] == 0)
{
data[i] = value;
size++;
front_p = data[i];
rear_p = data[i];
return true;
}
}
}
else if (!isFull())
{
for (int i = 0; i < capacity; i++)
{
if (data[i] == 0)
{
data[i] = value;
size++;
front_p = data[i];
rear_p = rear_p++;
return true;
}
}
}
else
{
return false;
}
}
/** Delete an element from the circular queue. Return true if the operation is successful. */
bool deQueue()
{
if (isEmpty())
{
return false;
}
else
{
front_p = front_p++;
return true;
}
}
/** Get the front item from the queue. */
int Front()
{
return front_p;
}
/** Get the last item from the queue. */
int Rear()
{
return rear_p;
}
/** Checks whether the circular queue is empty or not. */
bool isEmpty()
{
for (int i = 0; i < size; i++)
{
if (data[i] != 0)
{
return false;
}
else
return true;
}
}
/** Checks whether the circular queue is full or not. */
bool isFull()
{
if (size == capacity)
{
return true;
}
else
return false;
}
};