0% encontró este documento útil (0 votos)
13 vistas8 páginas

Practica#5

El documento describe una práctica de programación sobre estructuras de datos lineales. Se implementan una lista enlazada para almacenar datos de amigos, dos pilas para almacenar números pares e impares, y una pila y una cola donde los elementos eliminados de la pila pasan a la cola.

Cargado por

Alan García
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas8 páginas

Practica#5

El documento describe una práctica de programación sobre estructuras de datos lineales. Se implementan una lista enlazada para almacenar datos de amigos, dos pilas para almacenar números pares e impares, y una pila y una cola donde los elementos eliminados de la pila pasan a la cola.

Cargado por

Alan García
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

Laboratorio de Computacion Salas A y B

Profesor(a): Manuel Enrrique Castañeda Castañeda

Asignatura: Estructura de Datos y Algoritmos I

Grupo: 14

No de practica(s): 5

Integrante(s)Alan
: Saúl García González

No de lista o brigada:

Semestre:2024-2

Fecha de entrega:19/03/2024

Observaciones:

Calificacion:
1-almacenar los datos de n cuates e
imprimirlos en pantalla
#include <stdio.h>

CODIGO
#include <stdlib.h>
#include <string.h>

struct cuates {
char nombre[50];
int edad;
float prom;
struct cuates *sig;
};

struct cuates *primercuate = NULL;


struct cuates *ultimocuate = NULL;

void agregar(char nombre[], int edad, float prom);


void mostrar();
void eliminar(char nombre[]);
int main() {
int op;

do {
printf("MENU\n");
printf("1) agregar\n2) mostrar\n3) eliminar\n4) salir\n");
scanf("%i", &op);
switch (op) {
case 1:
{
char nombre[50];
int edad;
float prom;
printf("Ingrese el nombre: ");
scanf("%s", nombre);
printf("Ingrese la edad: ");
scanf("%d", &edad);
printf("Ingrese el promedio: ");
scanf("%f", &prom);
agregar(nombre, edad, prom);
}
break;
case 2:
mostrar();
break;
case 3:
{
char nombre[20];
printf("escriba el nombre del cuate que deseas eliminar: ");
scanf("%s",nombre);
eliminar(nombre);
}
break;
case 4:
printf("ADIOS!!!!!\n");
break;
default:
printf("Opcion no valida, elige otra opcion.\n");
}
} while (op != 4);

return 0;
}

void agregar(char name[], int edad, float prom) {


struct cuates *nuevocuate = (struct cuates *)malloc(sizeof(struct cuates));
if (nuevocuate == NULL) {
printf("No se pudo reservar la memoria.\n");
return;
}
strcpy(nuevocuate->nombre, name);
nuevocuate->edad = edad;
nuevocuate->prom = prom;
nuevocuate->sig = NULL;
if (primercuate == NULL) {
primercuate = nuevocuate;
ultimocuate = nuevocuate;
} else {
ultimocuate->sig = nuevocuate;
ultimocuate = nuevocuate;
}
}

void mostrar() {
struct cuates *temp = primercuate;
while (temp != NULL) {
printf("%s tiene %i anos y su promedio es %.2f\n", temp->nombre, temp->edad, temp->prom);
temp = temp->sig;
}
}

void eliminar(char nombre[]) {


struct cuates *actual = primercuate;
struct cuates *anterior = NULL;

while (actual != NULL && strcmp(actual->nombre, nombre) != 0) {


anterior = actual;
actual = actual->sig;
}

if (actual == primercuate) {
primercuate = primercuate->sig;
} else if (actual != NULL) {
anterior->sig = actual->sig;
} else {
printf("El cuate no se encuentra en la lista.\n");
return;
}

printf("El cuate '%s' ha sido eliminado de la lista.\n", nombre);


free(actual);
}
1-almacenar los datos de n cuates e
imprimirlos en pantalla

EJECUCION
2-almacenar en dos pilas los numeros del 1 al 100 si es
par en una si es impar en otra
CODIGO
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>

struct nodo {
int dato;
nodo *sig;
};

nodo *ultpar = NULL;


nodo *ultimpar = NULL;

void agregar(int numero);


void mostrarpares();
void mostrarimpares();
void eliminarpares();
void eliminarimpares();

int main(){
setlocale(LC_ALL,"spanish");
int op;
for (int i = 1; i <= 100; i++) {
agregar(i);
}
do {
printf("¿Qué deseas hacer?\n");
printf("1.-Mostrar números pares\n");
printf("2.-Mostrar números impares\n");
printf("3.-Eliminar elemento par\n");
printf("4.-Eliminar elemento impar\n");
printf("5.-Salir\n");
scanf("%d",&op);
switch (op) {
case 1:
mostrarpares();
break;
case 2:
mostrarimpares();
break;
case 3:
eliminarpares();
break;
case 4:
eliminarimpares();
break;
case 5:
printf("Adiós");
break;
default:
printf("Opción no válida\n");
break;
}
} while (op < 5);
}

void agregar(int numero) {


nodo *nuevo = (nodo*)malloc(sizeof(nodo));
if (nuevo == NULL) {
printf("No se pudo asignar memoria\n");
return;
}
nuevo->dato = numero;
if (numero % 2 == 0) {
nuevo->sig = ultpar;
ultpar = nuevo;
} else {
nuevo->sig = ultimpar;
ultimpar = nuevo;
}
}

void mostrarpares() {
nodo *indice = ultpar;
if (indice == NULL) {
printf("No hay números pares para mostrar\n");
}
printf("Números pares:\n");
while (indice != NULL) {
printf("|%d| ", indice->dato);
indice = indice->sig;
}
printf("\n");
}

void mostrarimpares() {
nodo *indice = ultimpar;
if (indice == NULL) {
printf("No hay números impares para mostrar\n");
}
printf("Números impares:\n");
while (indice != NULL) {
printf("|%d| ", indice->dato);
indice = indice->sig;
}
printf("\n");
}

void eliminarpares() {
if (ultpar == NULL) {
printf("No hay números pares para eliminar\n");
}
nodo *aux = ultpar;
ultpar = ultpar->sig;
free(aux);
printf("Elemento par eliminado correctamente\n");
}

void eliminarimpares() {
if (ultimpar == NULL) {
printf("No hay números impares para eliminar\n");
}
nodo *aux = ultimpar;
ultimpar = ultimpar->sig;
free(aux);
printf("Elemento impar eliminado correctamente\n");
}
2-almacenar en dos pilas los numeros del 1 al
100 si es par en una si es impar en otra

ejecucion
3-implementar una pila y una cola cuando se
elimine una dato de la pila se intgresa a la
cola
#include<stdio.h>
#include<stdlib.h>
CODIGO
#include<locale.h>

struct nodo {
int dato;
nodo *sig;
};

nodo *ultpila = NULL;


nodo *colainicio = NULL;
nodo *colafin = NULL;

void agregar_pila();
void agregar_cola(nodo *nuevo);
void mostrar_pila();
void mostrar_cola();
void eliminar_pila();
void eliminar_cola();

int main() {
setlocale(LC_ALL,"spanish");
int op;
do {
printf("¿Qué deseas hacer?\n");
printf("1.-Agregar a la pila\n");
printf("2.-Mostrar pila\n");
printf("3.-Eliminar de la pila\n");
printf("4.-Mostrar cola\n");
printf("5.-Eliminar cola\n");
printf("6.-Salir\n");
scanf("%d", &op);
switch (op) {
case 1:
agregar_pila();
break;
case 2:
mostrar_pila();
break;
case 3:
eliminar_pila();
break;
case 4:
mostrar_cola();
break;
case 5:
eliminar_cola();
break;
case 6:
printf("Adiós");
break;
default:
printf("Opción no válida\n");
break;
}
} while (op < 6);
}

void agregar_pila() {
nodo *nuevo = (nodo*)malloc(sizeof(nodo));
if (nuevo == NULL) {
printf("No se pudo asignar memoria\n");
}
printf("Ingrese el elemento:\n");
scanf("%d", &nuevo->dato);
nuevo->sig = ultpila;
ultpila = nuevo;
}

void agregar_cola(nodo *nuevo) {


if (colainicio == NULL) {
colainicio = nuevo;
colafin = nuevo;
} else {
colafin->sig = nuevo;
colafin = nuevo;
}
}

void mostrar_pila() {
nodo *indice = ultpila;
if (indice == NULL) {
printf("La pila está vacía\n");
}
printf("Elementos de la pila:\n");
while (indice != NULL) {
printf("|%d|\n", indice->dato);
indice = indice->sig;
}
}

void mostrar_cola() {
nodo *indice = colainicio;
if (indice == NULL) {
printf("La cola está vacía\n");
}
printf("Elementos de la cola:\n");
while (indice != NULL) {
printf("|%d|\n", indice->dato);
indice = indice->sig;
}
}

void eliminar_pila() {
if (ultpila == NULL) {
printf("La pila está vacía\n");
}
nodo *aux = ultpila;
ultpila = ultpila->sig;
aux->sig = NULL;
printf("Elemento eliminado de la pila: %d\n",aux->dato);
agregar_cola(aux);
}

void eliminar_cola() {
if (colainicio == NULL) {
printf("La cola está vacía, no se pueden eliminar elementos.\n");
}

nodo *aux = colainicio;


colainicio = colainicio->sig;
printf("Elemento eliminado correctamente\n");
free(aux);
}
}
3-implementar una pila y una cola cuando
se elimine una dato de la pila se intgresa a
la cola

EJECUCIÓN
OBSERVACIONES

Este tema creo que es un poco abstracto por lo de


de las direcciones de memoria y los apuntadores,
por lo que se me dificulto un poco poder entender
como hacer los codigos.

CONCLUSIONES

En conclusion creo que con la practica se va


haciendo mas claro el tema aunque todavia no
comprenda del todo bien algunas cosas se han
hecho un poco mas comprensibles.

También podría gustarte