Está en la página 1de 6

Práctica 7

Facultad de Ingeniería Laboratorio de docencia

Laboratorios de computación
Salas A y B
Profesor: M.I. Gustavo Vergara Gonzaga

Asignatura: Estructura de Datos y Algoritmos 1

Grupo: 03

No de Práctica(s): 05

Integrante(s): ​López Sugahara Oscar Isao / Malagón Gutiérrez Costanza María


Mendoza Anaya Aldair Israel / Eduardo
No. de Equipo de cómputo
empleado: --------

No. de Lista o Brigada: 06

Semestre: 2020-2

Fecha de entrega:

Observaciones: --------

CALIFICACIÓN: ____________
OBJETIVO
Realizar un menú y programar las funciones principales que se
utilizan en una lista simple, estas funciones deberán estar incluidas
en funciones de C y utilizar el pase por referencia para que
funcionen.

CONCLUSIONES INDIVIDUALES

Oscar Isao López Sugahara​: En esta ocasión se programó un menú junto con
las funciones de cada operación de insertar, borrar y buscar para el caso de
lista simple. Debido a que los parámetros utilizados en cada función tuvieron
que ser cambiados dentro de la misma función se utilizó el pase por referencia,
donde se paso por referencia a varios apuntadores de nuestra estructura lista.

Costanza María Malagón Gutiérrez​: Se logró cumplir con el objetivo; realizar un


menú utilizando las funciones de insertar, buscar y borrar que pertenecen a las
listas simples.

Mendoza Anaya Aldair Israel : ​una función sencilla cuando se entiende cómo
funciona cada operación para insertar, buscar y eliminar, por lo que yo diría que
la práctica funciona con éxito.

Eduardo : ​una

ANEXO(código)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct list{
int k;
char dato;
struct list* next;
};
typedef struct list list;

void insertar(list** head,list** nuevo, int* ins);


void buscar(list** mueve,list** head);
1
void borrar(list** anterior,list** mueve,list** head);

int main()
{

list* head = NULL;


list* nuevo = NULL;
list* mueve = NULL;
list* anterior = NULL;
int n = 0;
int ins = 1;

while (n!=4) {
printf ("\nSELECCIONA UNA OPCION: \n\n");
printf ("1.- INSERTAR.\n");
printf ("2.- BUSCAR.\n");
printf ("3.- BORRAR.\n");
printf ("4.- SALIR DEL PROGRAMA.\n");
printf ("\nOpcion a escojer: ");
scanf ("%d", &n);
getchar ();

switch (n) {

case 1:
insertar(&head,&nuevo,&ins);
break;

case 2:
buscar(&mueve,&head);
break;

case 3:
borrar(&anterior,&mueve,&head);
break;

case 4:
system ("clear");
printf ("Escojio: salir del programa.\n ");
printf ("Adios\n");
break;

default:
2
system ("clear");
printf ("OPCION NO VALIDA. ");
break;

}
}
return 0;
}

//Funciones

void insertar(list** head, list** nuevo, int* ins){


char dato;
system ("clear");
printf ("1.- INSERTAR. \n");
*nuevo = calloc(1, sizeof(list));
(*nuevo)->k = *ins;
*ins=*ins+1;
printf ("Introduzca un caracter como dato: \n");
scanf ("%c", &dato);
(*nuevo)->dato = dato;
(*nuevo)->next = *head;
*head = *nuevo;
printf ("\n-------------------------------\n");
}

void buscar(list** mueve,list** head){


int busc, find, search = 0;
system ("clear");
printf ("2.- BUSCAR.\n");
printf ("Introduzca el numero de elemento a buscar: \n");
scanf ("%d", &busc);
search = busc;
find = 0;
*mueve = *head;
while(*mueve != NULL){
if((*mueve)->k == search) {
find = busc;
printf("\nEl elemento %d se encuentra en la lista", search);
printf("\nSu informacion es: %c", (*mueve)->dato);
if((*mueve)->next == NULL) {
printf("\n- No hay Siguiente\n");
} else{
3
printf("\n- El elemento siguiente es: %d",
(*mueve)->next->k);
printf("\n- Su informacion es: %c \n",
(*mueve)->next->dato);
}
break;
}
*mueve = (*mueve)->next;
}
if(find == 0) {
printf("\nEl elemento %d no se encuentra en la lista\n", search);
}
printf ("\n-------------------------------\n");
}

void borrar(list** anterior, list** mueve, list** head){


int delete = 0, borra, removed = 0;
system ("clear");
printf ("3.- BORRAR.\n");
*anterior = NULL;
*mueve = *head;
printf ("Introduzca el numero de elemento a borrar: \n");
scanf ("%d", &borra);
delete = borra;

if(*head == NULL) {
removed = borra;
} else {

while((*mueve)->k != delete) {
if((*mueve)->next == NULL) {
break;
} else {
*anterior = *mueve;
*mueve = (*mueve)->next;
}
}
if((*mueve)->k == delete) {
removed = 1;
} else {
removed = 0;
}
}
4
if(removed == borra && *head == NULL) {
printf("\nNo se puede borrar de una lista vacia\n");
} else if(removed == 0) {
printf("\nEl elemento %d no se encuentra en la lista\n",
delete);
} else{
printf("\nEl elemento %d se borrara de la lista\n", delete);
if(*mueve == *head) {
*head = (*mueve)->next;
} else {
(*anterior)->next = (*mueve)->next;
}
free(*mueve);
}
}

También podría gustarte