Está en la página 1de 14

1

PORTADA_________________________________________________________1

INDICE___________________________________________________________2

ENUNCIADO DEL PROBLEMA_________________________________________3

PROPUESTA DE SOLUCION CON DIAGRAMAS____________________________4

CODIGO DOCUMENTADO___________________________________________5-10

SALIDAS DE CODIGO(TERMINAL)_____________________________________11-13

BIBLIOGRAFIAS____________________________________________________14
3

Crear un programa en C que implemente las operaciones queue y dequeue para una cola dinámica.

Cada item de la cola se creará dinámicamente (deberá utilizar punteros) y tendrá dos elementos:
una sección data (en este caso de tipo struct con un Id entero y una descripción string) y un
apuntador al siguiente item de la lista.

El valor de los elementos deberá ser solicitado al usuario.El programa deberá mostrar un menú en
pantalla que permita seleccionar la operación a realizar, además de imprimir la cola.

Debe utilizarse el modelo orientado a objetos.


4

En nuestro código implementado en C se nos pedía realizar una cola o como cor44dialmente se nos
pide un queue y un dequeue en el cual nosotros vamos a guardar un dato en dicha cola gracias a un
id y una descripción de un articulo cualquiera, la propuesta de solución en nuestro código
implementado en C es en primera instancia crear nuestra cola y dada la cola definir nuestra
variables a guardar tales como lo son los “ítems” en los que almacenamos id y descripción dado eso
gracias a una función, empezando por un menú en donde el usuario debe de elegir que acción
realizar, desde añadir elementos a la cola, eliminar elementos a la cola, imprimir los elementos de
la cola y salir, una vez que el código se ejecuta se crea una cola vacía y las variables, una vez des la
opción de añadir objeto se va a mandar a traer la función queue la cual te pedirá los datos y los
enviara a la cola y el apuntador front y rear van a buscar cual es el primer dato ingresado y el
ultimo, tal que el primer ítem es siempre el ultimo, una vez que ingreses más ítems o datos los
apuntadores de rear y front se van a ir actualizando, nuestro apuntador rear nos ayudara a
identificar lo mas bajo de la cola ayudándonos a añadir más ítems por debajo de este, ahora gracias
a nuestro apuntador front nos ayudar a conocer el tope de nuestra pila el que nos ayudara a
eliminar gracias a la función dequeue ya que este al eliminar ser actualizara su posición al ítem que
está por debajo de la punta y liberara memoria eliminando de nuestra memoria aquella variable
que ingresamos en primera instancia, ahora gracias a la función PrintQueue crearemos un puntero
que va a ir recorriendo toda nuestra cola imprimiéndola hasta que se llegue a un estado NULO, a
continuación se muestra el diagrama utilizado como guía para la elaboración del código
implementado en C:
5

#include <stdio.h>//importamos las librerias

#include <stdlib.h>

#include <string.h>

// Definición de la estructura para un item de la cola struct

Item {

int id;

char description[100];

struct Item *next;

};

// Definición de la estructura para la cola struct Queue {//definimos la estructura

struct Item *front;//puntero a la estructura item ue representa el frente de la cola

struct Item *rear;//puntero la estructura item ue representra la parte trasero o el final de


la cola osea el ultimo elemento

};

// Función para crear un nuevo item

struct Item* createItem(int id, const char *description) {//creamos la funcion de crear item ue
recibe como argumento el identificador y un puntero a una cadema de caracteres

struct Item *newItem = (struct Item*)malloc(sizeof(struct Item));//asignamos memoria


dinamica usando malloc para crear un nuevo elemento del tamaño item newItem->id =
id;//configuramos el entero del nuevo elemento

strncpy(newItem->description, description, sizeof(newItem->description));//copiamos la


cadena y devolvemos el tamaño en bytes del campo descripcion del item

newItem->next = NULL;//indicamos ue el puntero "next" no esta vinculado a ningun otro


elemento

return newItem;// devolvemos el puntero al nuevo elemento creado


6

// Función para inicializar una cola vacía

void initializeQueue(struct Queue *queue) {//iniciamos una funcion con argumento de un puntero
a la estructura queue

queue->front = queue->rear = NULL;//indiccamos que la cola esta vacia estableciendo los


punteros de inicio y final

// Función para agregar un item a la cola

void enqueue(struct Queue *queue, struct Item *newItem) {//funcion que toma como parametros
el puntero a queue ue representa la cola y puntero a item que representa el nuevo elemento a
agregar if (queue->rear == NULL) {//mediante una sentencia verificamos si la cola esta
vacia

queue->front = queue->rear = newItem;//si esta vacia establecemos el puntero de


incio y final en le nuevo elemento ya ue es el unico elemento presente en la cola

} else {//si no esta vacia

queue->rear->next = newItem;//el punterio next del ultimo elemento se establece


en el nuevo elemento enlazando el ultimo elemento actual al nuevo elemento

queue->rear = newItem;//se actualiza el puntero final "rear" para ue apunte al


nuevo elemento convirtiendolo en el ultimo

// Función para eliminar un item de la cola

void dequeue(struct Queue *queue) {//creamos la funcion con parametros a un puntero a la


estructura queue la cual es la cola if (queue->front == NULL) {//vertificamos que la cola
este vacia printf("La cola está vacía.\n");//mandamos a imprimir en pantalla

} else {//si no esta vacia

struct Item *temp = queue->front;//creamos un puntero temporal que apunta al


primer elemento de la cola
7

queue->front = queue->front->next;//actualizamos el puntero de inicio para que


apunte al siguiente elemento del primer elemento actual lo que nos garantiza eliminar eliminar el
primer elemento de la cola free(temp);// liberamos memoria ocupada por el
elemento eliminado

// Función para imprimir la cola

void printQueue(const struct Queue *queue) {//funcion con parametros a la cola de manera
constante printf("Cola:\n");//mandamos a imprimir a pantalla

struct Item *current = queue->front;//creamos un puntero qque inicializa con el puntero


de inicio, este puntero recorrera los elementos de la cola

while (current != NULL) {//mediante una sentencia recorremos nuestro puntero donde no
sea nulo para encontrar los elementos de la cola

printf("ID: %d, Descripción: %s\n", current->id, current->description);//imprimimos en pantalla


los datos

current = current->next;//luego de imprimir el elemento actual avanzamos el


puntero al siguiente elemento de la cola

int main() {

struct Queue queue;

initializeQueue(&queue);

int opcion;

do {

printf("\nMenú:\n");// creamos un menu


8

printf("1. Agregar a la cola\n");

printf("2. Eliminar de la cola\n"); printf("3. Mostrar

cola\n"); printf("0. Salir\n");

printf("Selecciona una opción: "); scanf("%d",

&opcion);//leemos la entrada de teclado

switch (opcion) {//hacemos segun la entrada de teclado

case 1: {//en el caso 1 int

id;//definimos la variable entera

char description[100];//definimos una variable de cadena de caracteres

printf("Ingresa el ID: ");//mandamos a imprimir a pantalla

scanf("%d", &id);//leemos la entrada de teclado printf("Ingresa la

descripción: "); scanf("%s", description);

struct Item *newItem = createItem(id, description);//creamos la variable


de nuevo item tomando como parametros el id y la descripcion

enqueue(&queue, newItem);//llamamos a la funcion

printf("Elemento agregado a la cola.\n");//mandamos a imprimir a pantalla

break;

case 2:

dequeue(&queue);//llamamos a la funcion

printf("Elemento eliminado de la cola.\n");//mandamos a imrpimir

break;

case 3:

printQueue(&queue);//llamamos a la funcion

break;

case 0:

printf("Saliendo del programa.\n");//mandamos a imprimir


9

break;

default:

printf("Opción no válida.\n");

} while (opcion != 0);//salimos

return 0;

}
10
11

Procedemos a imprimir los datos guardados en la cola:


12

Procedemos a eliminar 1 por 1:

Ya que al fin nos quedamos con 1 procedemos a eliminarlo:


13

Y tal como se puede observar ya nos quedamos con la cola vacía, salimos del programa:
14

Programación orientado a objetos en C. (2010, December 12). Trucos


Informáticos.
https://trucosinformaticos.wordpress.com/2010/12/12/programacionorie
ntado-a-objetos-en-c/

También podría gustarte