Implementación de la estructura de datos de cola en C

CBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderás cómo implementar una estructura de datos de cola en C. Las colas se utilizan ampliamente en informática, por ejemplo, en las colas de mensajes que se utilizan para transmitir datos en un computador.

👀 Vista previa

$ gcc queue.c -o queue
$./queue
11250

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo implementar el método front() para devolver el valor del elemento frontal en la cola
  • Cómo implementar el método pop() para eliminar y devolver el elemento frontal de la cola
  • Cómo implementar el método count() para devolver el número de elementos actualmente en la cola
  • Cómo implementar el método is_empty() para comprobar si la cola está vacía

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender las operaciones básicas de una estructura de datos de cola
  • Implementar los métodos principales de una cola en C
  • Aplicar tus conocimientos de colas para resolver problemas del mundo real

Implementar el método front()

En este paso, aprenderás cómo implementar el método front() de la cola.

El método front() debe devolver el valor del elemento frontal en la cola. Si la cola está vacía, el método debe salir del programa con exit(-1).

Siga los pasos siguientes para completar este paso:

  1. Abra el archivo queue.c ubicado en /home/labex/project/queue.c.
  2. Localice el método front() en el código.
  3. Implemente el método front() de la siguiente manera:
static int front() {
    if(!phead) {
        exit(-1);
    }
    return phead->val;
}

El método front() primero comprueba si el puntero phead es NULL, lo que indica una cola vacía. Si la cola está vacía, el método sale del programa con exit(-1).

Si la cola no está vacía, el método devuelve el valor almacenado en el nodo phead, que representa el elemento frontal de la cola.

✨ Revisar Solución y Practicar

Implementar el método pop()

En este paso, aprenderás cómo implementar el método pop() de la cola.

El método pop() debe eliminar y devolver el elemento frontal de la cola. Si la cola está vacía, el método debe salir del programa con exit(-1).

Siga los pasos siguientes para completar este paso:

  1. Abra el archivo queue.c ubicado en /home/labex/project/queue.c.
  2. Localice el método pop() en el código.
  3. Implemente el método pop() de la siguiente manera:
static int pop() {
    if(!phead) {
        exit(-1);
    }
    int val = phead->val;
    phead = phead->next;
    return val;
}

El método pop() primero comprueba si el puntero phead es NULL, lo que indica una cola vacía. Si la cola está vacía, el método sale del programa con exit(-1).

Si la cola no está vacía, el método almacena el valor del nodo phead, que representa el elemento frontal de la cola. Luego, actualiza el puntero phead al siguiente nodo, eliminando efectivamente el elemento frontal de la cola. Finalmente, el método devuelve el valor almacenado.

✨ Revisar Solución y Practicar

Implementar el método count()

En este paso, aprenderás cómo implementar el método count() de la cola.

El método count() debe devolver el número de elementos actualmente en la cola.

Siga los pasos siguientes para completar este paso:

  1. Abra el archivo queue.c ubicado en /home/labex/project/queue.c.
  2. Localice el método count() en el código.
  3. Implemente el método count() de la siguiente manera:
static int count() {
    int cnt = 0;
    for(struct node* p = phead; p; p=p->next) {
        cnt++;
    }
    return cnt;
}

El método count() inicializa una variable cnt a 0. Luego, recorre la cola siguiendo los punteros next del nodo phead y sus sucesores. Para cada nodo encontrado, incrementa la variable cnt. Finalmente, el método devuelve el valor de cnt, que representa el número de elementos en la cola.

✨ Revisar Solución y Practicar

Implementar el método is_empty()

En este paso, aprenderás cómo implementar el método is_empty() de la cola.

El método is_empty() debe devolver 1 si la cola está vacía, y 0 en caso contrario.

Siga los pasos siguientes para completar este paso:

  1. Abra el archivo queue.c ubicado en /home/labex/project/queue.c.
  2. Localice el método is_empty() en el código.
  3. Implemente el método is_empty() de la siguiente manera:
static int is_empty() {
    return phead == NULL;
}

El método is_empty() simplemente comprueba si el puntero phead es NULL, lo que indica una cola vacía. Si phead es NULL, el método devuelve 1, lo que indica que la cola está vacía. En caso contrario, devuelve 0, lo que indica que la cola no está vacía.

Felicitaciones ¡Has implementado ahora todos los métodos requeridos para la estructura de datos de cola. Ahora puedes compilar y ejecutar el programa para probar la funcionalidad de la cola.

  1. Compilar y ejecutar:
$ gcc queue.c -o queue
$./queue
00000

La salida esperada es la siguiente:

$ gcc queue.c -o queue
$./queue
11250
✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.