Как написать функцию dequeue dequeue по списку избранного - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь написать funtion dequeue очереди по связанному списку.

Пожалуйста, помогите мне, я застрял.Это довольно минус статуя!

В http://codepad.org/9kAnwY0w вы можете найти код:

1 Ответ

0 голосов
/ 09 октября 2018

Вы используете односвязный список, поэтому исключайте его только из головы.

Если вы хотите выскочить из хвоста, вам нужно использовать двусвязный список

#include <stdio.h>
#include <stdlib.h>

typedef struct aNODE {
    int     data;
    struct aNODE    * pNext;
} NODE;

NODE    *rear, *front;
int count;

void initQueue()
{
    rear    = NULL;
    front   = NULL;
    count   = 0;
}


void enqueue(int data)
{
    NODE* newNode = (NODE *) malloc( sizeof(NODE) );
    newNode->pNext = NULL;
    newNode->data = data;

    /* TH1. Queue ban dau rong */
    if ( count == 0 )
    {
        front = newNode;
        rear = newNode;
        count++;
    } else { /* TH2. Khac rong */
        rear->pNext = newNode;
        rear = newNode;
        count++;
    }
}


NODE* dequeue()
{
    if (!front) 
    {
        return(NULL);
    }

    NODE* tmp = front;
    front = front->pNext;
    count--;
    return(tmp);
}

int size()
{
    return(count);
}

int main()
{
    initQueue();
    printf("size %d\n", size());
    for (int i = 0; i < 100; i++)
    {
        enqueue(i + 1);
    }

    printf("size %d\n", size());

    for (int i = 0; i < 50; i++)
    {
        dequeue();
    }

    printf("size %d\n", size());

    return(0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...