Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorios de computación
salas A y B
Profesor: Ing. Jonathan Roberto Torres Castillo
Grupo: 9
No de Práctica(s): 7
Semestre: 2018-II
Observaciones:
CALIFICACIÓN: _________
1
PRACTICA 7
ESTRUCTURAS DE DATOS LINEALES: LISTA SIMPLE Y
LISTA CIRCULAR.
ESTRUCTURA DE DATOS Y ALGORITMOS I
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
2. Objetivos
Revisarás las definiciones, características, procedimientos y ejemplos de las estructuras lineales Lista
simple y Lista circular, con la finalidad de que comprendas sus estructuras y puedas implementarlas.
3. Introducción
Las listas son un tipo de estructura de datos lineal y dinámica. Es lineal porque cada elemento tiene
un único predecesor y un único sucesor, y es dinámica porque su tamaño no es fijo y se puede
definir conforme se requiera. Las operaciones básicas dentro de una lista son BUSCAR,
INSERTAR Y ELIMINAR.
2
Licencia GPL de GNU
El software presente en esta guía práctica es libre bajo la licencia GPL de
GNU, es decir, se puede modificar y distribuir mientras se mantenga la
licencia GPL. /*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
<http://www.gnu.org/licenses/>.
*
* Author: Jorge A. Solano
*/
4.1. Actividad 1
A partir del código ‘U1_P8_listas.c’ visto en clase, realice las modificaciones necesarias en
la función ‘borrar’ para que en pantalla se despliegue un mensaje cada vez que se intente
borrar un nodo que no existe en la lista e.g. “El nodo con valor 15 no existe”.
En este apartado describa lo realizado y muestre ejemplos con los resultados obtenidos.
_________________________________________________________________________
_________________________________________________________________
4.2. Actividad 2
3
En este apartado describa lo realizado y muestre ejemplos con los resultados obtenidos.
5. Código
En esta sección se presenta el código fuente del programa que permitió cumplir los
objetivos propuestos. El programa debe estar comentado en cada una de sus líneas de código
y/o en sus ciclos iterativos.
4
void Insertar(Lista *l, int v);
void Borrar(Lista *l, int v);
int ListaVacia(Lista l);
void BorrarLista(Lista *);
void MostrarLista(Lista l);
int main(){
Lista lista = NULL;
pNodo p;
Insertar(&lista, 20);
Insertar(&lista, 10);
Insertar(&lista, 40);
Insertar(&lista, 30);
MostrarLista(lista);
Borrar(&lista, 10);
Borrar(&lista, 15);
Borrar(&lista, 45);
Borrar(&lista, 30);
Borrar(&lista, 40);
MostrarLista(lista);
BorrarLista(&lista);
5
system("PAUSE");
return 0;
}
6
}
}
nodo = *lista;
anterior = NULL;
while(nodo && nodo->valor < v) {
anterior = nodo;
nodo = nodo->siguiente;
}
if(!nodo || nodo->valor != v){
printf("\n\n\t el elemento %d no fue encontrado\n",v);
return;
}
else {
/* Borrar el nodo */
if(!anterior)
/* Primer elemento */
*lista = nodo->siguiente;
else
/* un elemento cualquiera */
anterior->siguiente = nodo->siguiente;
free(nodo);
}
7
}
8
5.2. Código Actividad 2
_________________________________________________________________________
________________________________________________________
6. Conclusiones
_________________________________________________________________________
__________________________________________________________________
7. Referencias
[1] GARCÍA CANO, Edgar, SOLANO GÁLVEZ, Jorge, Guía práctica de estudio #,
Nombre de la practica, Facultad de ingeniería, UNAM.