Pagina de inicio
/
Tecnología
/
Programe a través de lenguaje C procedimientos que le permitan:  Crear un nodo  Crea el espacio en memoria para la ejecución de los nodos  Crea procedimientos que permita insertar elementos en una pila y en una cola  Crea procedimientos que permita desopilar y desencolar un elemento de la pila y cola  Un procedimiento que muestra los elementos de la pila y de la cola  Procedimiento que permita vaciar la pila y la cola. • Comente 3 líneas de código por procedimiento que son fundamentales para la ejecución de programa. ​

Pregunta

Programe a través de lenguaje C procedimientos que le permitan:  Crear un nodo  Crea el espacio en memoria para la ejecución de los nodos  Crea procedimientos que permita insertar elementos en una pila y en una cola  Crea procedimientos que permita desopilar y desencolar un elemento de la pila y cola  Un procedimiento que muestra los elementos de la pila y de la cola  Procedimiento que permita vaciar la pila y la cola. • Comente 3 líneas de código por procedimiento que son fundamentales para la ejecución de programa. ​

Solución

avatar
Leticiaprofessionell · Tutor durante 6 años
expert verifiedVerificación de expertos
4.3 (297 votos)

Responder

<div class="athena_tag_tk_ques_text_content" data-testid="answer_box_text"><p><strong>Respuesta:</strong></p><p></p><p>```c</p><p>#include &lt;stdio.h&gt;</p><p>#include &lt;stdlib.h&gt;</p><p></p><p>// Estructura para el nodo</p><p>typedef struct Nodo {</p><p> int dato;</p><p> struct Nodo* siguiente;</p><p>} Nodo;</p><p></p><p>// <strong>Función para crear un nuevo nodo</strong></p><p>Nodo* crearNodo(int dato) {</p><p> Nodo* nuevoNodo = (Nodo*)malloc(sizeof(Nodo)); // Asigna memoria para el nuevo nodo</p><p> nuevoNodo-&gt;dato = dato; // Asigna el dato al nuevo nodo</p><p> nuevoNodo-&gt;siguiente = NULL; // Establece el siguiente nodo como NULL</p><p> return nuevoNodo; // Retorna el nuevo nodo creado</p><p>}</p><p></p><p>// <strong>Procedimiento para insertar un elemento en la pila</strong></p><p>void pushPila(Nodo** pila, int dato) {</p><p> Nodo* nuevoNodo = crearNodo(dato); // Crea un nuevo nodo con el dato</p><p> nuevoNodo-&gt;siguiente = *pila; // Establece el siguiente nodo como el tope de la pila</p><p> *pila = nuevoNodo; // El nuevo nodo se convierte en el tope de la pila</p><p> printf("Elemento insertado en la pila: %d\n", dato);</p><p>}</p><p></p><p>// <strong>Procedimiento para desapilar un elemento de la pila</strong></p><p>void popPila(Nodo** pila) {</p><p> if (*pila == NULL) { // Verifica si la pila está vacía</p><p> printf("La pila está vacía.\n");</p><p> return;</p><p> }</p><p> Nodo* nodoEliminar = *pila; // Nodo a eliminar es el tope de la pila</p><p> *pila = (*pila)-&gt;siguiente; // El siguiente nodo se convierte en el tope de la pila</p><p> int dato = nodoEliminar-&gt;dato; // Obtiene el dato del nodo a eliminar</p><p> free(nodoEliminar); // Libera la memoria del nodo a eliminar</p><p> printf("Elemento eliminado de la pila: %d\n", dato);</p><p>}</p><p></p><p>// <strong>Procedimiento para mostrar los elementos de la pila</strong></p><p>void mostrarPila(Nodo* pila) {</p><p> if (pila == NULL) { // Verifica si la pila está vacía</p><p> printf("La pila está vacía.\n");</p><p> return;</p><p> }</p><p> printf("Elementos de la pila:\n");</p><p> Nodo* actual = pila; // Apunta al tope de la pila</p><p> while (actual != NULL) { // Recorre los nodos de la pila</p><p> printf("%d ", actual-&gt;dato); // Imprime el dato del nodo actual</p><p> actual = actual-&gt;siguiente; // Se mueve al siguiente nodo</p><p> }</p><p> printf("\n");</p><p>}</p><p></p><p>// <strong>Procedimiento para vaciar la pila</strong></p><p>void vaciarPila(Nodo** pila) {</p><p> Nodo* actual = *pila; // Apunta al tope de la pila</p><p> while (actual != NULL) { // Recorre los nodos de la pila</p><p> Nodo* nodoEliminar = actual; // Nodo a eliminar es el nodo actual</p><p> actual = actual-&gt;siguiente; // Se mueve al siguiente nodo</p><p> free(nodoEliminar); // Libera la memoria del nodo a eliminar</p><p> }</p><p> *pila = NULL; // La pila queda vacía</p><p> printf("La pila se ha vaciado.\n");</p><p>}</p><p></p><p>int main() {</p><p> Nodo* pila = NULL;</p><p> pushPila(&amp;pila, 1);</p><p> pushPila(&amp;pila, 2);</p><p> pushPila(&amp;pila, 3);</p><p> mostrarPila(pila);</p><p> popPila(&amp;pila);</p><p> mostrarPila(pila);</p><p> vaciarPila(&amp;pila);</p><p> mostrarPila(pila);</p><p> return 0;</p><p>}</p><p>```</p><p></p><p><strong>Las 3 líneas de código fundamentales en cada procedimiento son:</strong></p><p></p><p>1. En `crearNodo`, la línea `Nodo* nuevoNodo = (Nodo*)malloc(sizeof(Nodo));` asigna memoria para el nuevo nodo, esencial para poder crearlo y almacenar el dato.</p><p></p><p>2. En `pushPila`, la línea `nuevoNodo-&gt;siguiente = *pila;` establece el siguiente nodo del nuevo nodo como el tope de la pila actual, permitiendo mantener la estructura de la pila al insertar un nuevo elemento.</p><p></p><p>3. En `popPila`, la línea `Nodo* nodoEliminar = *pila;` asigna el tope de la pila a un nodo auxiliar `nodoEliminar`, necesario para liberar la memoria ocupada por este nodo después de eliminarlo de la pila.</p><p></p></div>
Haz clic para calificar: