Как правильно обработать индекс с помощью заднего указателя (программа структурированной очереди) - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время я пытаюсь создать метод постановки в очередь для структурированного подхода.В этой программе у меня возникают проблемы со ссылками на подписки в массиве программы ниже.Должен ли я использовать * 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;
             }
        }    
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...