В настоящее время я пытаюсь создать метод постановки в очередь для структурированного подхода.В этой программе у меня возникают проблемы со ссылками на подписки в массиве программы ниже.Должен ли я использовать * Rear + 1, чтобы правильно сослаться на него?Или другой синтаксис, который я должен использовать, чтобы правильно ссылаться на следующий элемент.
bool Enqueque(int** queue, int* front, int* rear, int* nElements, int* capacity,
int userInput)
{
//if there is no more space in the Queue
if( *nElements == *capacity )
{
//update the capacity
*capacity = *nElements * 2;
//asked OS for more memory
int* growQueue = (int*)malloc( (*capacity) * sizeof(int) );
//error checking
if(growQueue == NULL)
return false;
//take all the elements from the original queue and put into the bigger queue
for(int i = 0; i<*nElements; i++)
growQueue[i] = (*queue)[i];
free(*queue);
*queue = growQueue;
(*queue)[*nElements] = userInput;
nElements++;
}
//if there is space in the queue
else if(*nElements+1 > *capacity)
{
//if queue is empty
if(front == NULL)
{
//front and rear are both pointers to the same element
front = queue[0];
rear = queue[0];
(*queue)[0] = userInput;
*nElements++;
return true;
}
else if(*nElements >= 1)
{
//move the userInput into the next available spot behind the
//element after rear. plus four because int takes 4 bytes
(*queue)[ (*rear)+1 ] = userInput;
//The array subscript below is not working correctly
rear = (*queue)[ rear+1 ];
return true;
}
}
}