Eq6 Lista PDF

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

Benemérita Universidad Autónoma de Puebla

Facultad de Ciencias de la Computación


Ingeniería en Ciencias de la Computación

NRC: 13305

Estructura de datos
1er Parcial

Profesor:
Dra. Beatriz Beltrán Martínez

Equipo 6
Christian S. Hernández Romero
Matricula: 202123914
Código

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

typedef struct Nodo {


int dato;
struct Nodo* siguiente;
} Nodo;

void insertar(Nodo** cabeza, int dato) {


Nodo* nuevoNodo = (Nodo*)malloc(sizeof(Nodo));
nuevoNodo->dato = dato;
nuevoNodo->siguiente = NULL;

if (*cabeza == NULL) {
*cabeza = nuevoNodo;
return;
}

Nodo* actual = *cabeza;


while (actual->siguiente != NULL) {
actual = actual->siguiente;
}
actual->siguiente = nuevoNodo;
}

void imprimirLista(Nodo* cabeza) {


Nodo* actual = cabeza;
while (actual != NULL) {
printf("%d -> ", actual->dato);
actual = actual->siguiente;
}
printf("NULL\n");
}

void borrarOcurrencias(Nodo** cabeza, int valor) {


Nodo* actual = *cabeza;
Nodo* previo = NULL;
Nodo* temp;

while (actual != NULL) {


if (actual->dato == valor) {
if (previo == NULL) {
temp = *cabeza;
*cabeza = (*cabeza)->siguiente;
libera(temp);
actual = *cabeza;
} else {
temp = actual;
previo->siguiente = actual->siguiente;
actual = actual->siguiente;
libera(temp);
}
} else {
previo = actual;
actual = actual->siguiente;
}
}
}

int main() {
Nodo* lista = NULL;
int numElementos;
printf("\n--------------------------------------------------------");
printf("\nIngrese el número de elementos en la lista: ");
scanf("%d", &numElementos);
for (int i = 0; i < numElementos; i++) {
int elemento;
printf("\nIngrese el elemento %d: ", i + 1);
scanf("%d", &elemento);
insertar(&lista, elemento);
}
printf("Lista original: ");
imprimirLista(lista);
int valor_a_borrar;
printf("\nIngrese el valor que desea eliminar: ");
scanf("%d", &valor_a_borrar);

borrarOcurrencias(&lista, valor_a_borrar);

printf("\nLista después de borrar todas las ocurrencias de %d: ", valor_a_borrar);


imprimirLista(lista);

while (lista != NULL) {


Nodo* temp = lista;
lista = lista->siguiente;
libera(temp);
}
return 0;
}
Pruebas de ejecución
Video

https://drive.google.com/file/d/
1CgrRpf6KTtmu_LB62GYn2aw7BxSZqMRi/view?
usp=drive_link

También podría gustarte