Professional Documents
Culture Documents
Keywords:
Data structures, arrays, list, files, stacks and queues.
Contenido programtico
INTRODUCCIN
UNIDAD I: Introduccin a las estructuras de datos
UNIDAD II: Estructuras de datos estticas
UNIDAD III: Estructuras de datos dinmicas
UNIDAD IV: Archivos
Hacer clic sobre el texto
SALIR
Estructuras de Datos
Qu necesitas
saber?
MENU
OBJETIVO
pueden
procesar
informacin.
gran
cantidad
de
Son
una
coleccin
organizacin
se
de
datos
caracteriza
por
cuya
las
acceder
individuales de datos.
elementos
encontrar un determinado
valor en la estructura para
realizar una operacin con
este valor
borrar un valor de la
estructura
de los elementos
pertenecientes a la estructura
Qu necesitas saber?
Conocer el lenguaje de programacin en C
Bibliografa recomendada
Aaron N. Tenebaum, Estructura de Datos En C, Ed. Prentice
Cair/Guardati, Estructura de Datos,
Introduccin a las
Estructuras de Datos
Fueron diseadas
Acceso a gran
cantidad de
informacin
Aplicaciones de
almacemanamiento
Operaciones de
clculo
En un mnimo de
tiempo
Estticas
Dinmicas
Uso de arreglos
Uso de matrices
Uso de punteros
Manejo de memoria
Bibliografa recomendada
Aaron N. Tenebaum, Estructura de Datos En C, Ed. Prentice
Cair/Guardati, Estructura de Datos,
Estructuras de Datos
Estticas
Pilas
y
Colas
Son
estructuras
utilizadas
como
herramientas de programacin de tipo
LIFO (Last in-First out)
Permiten el acceso solo a un elemento a
la vez.
Ejemplo
Pila de libros
Ejemplo
Pila de libros
Selectores:
Pila-Vacia? (El apuntado Cabeza es Nul?)
Top (Mostrar el primero)
Algoritmos
Push( S, x )
Top( S ) < Top( S ) + 1
S[ top( S ) ] < x
Pop( S )
If PilaVacia
error
PilaVacia( S )
else
If top( S ) = 0
return true
return S[ Top( S ) + 1 ]
Else
return false
Selectores:
Cola-Vaca (El apuntado Cabeza es Null)
Primero-Cola (Mostrar el primero)
Algoritmos
Encolar( Q, x )
Q[ Fin( Q ) ] < x
if Fin( Q ) = length( Q )
Fin( Q ) < 1
else
Fin( Q ) < Fin( Q ) + 1
Desencolar( Q )
x < Q[ Cabeza( Q ) ]
if Cabeza( Q ) = Length( Q )
Cabeza( Q ) < 1
else
Cabeza( Q ) < Cabeza( Q )
+1
return x
Actividad
MENU
Estructuras de Datos
Dinmicas
Listas Doblemente
Enlazadas
Definicin
Es una lista lineal en la que cada nodo
tiene dos enlaces, uno al nodo siguiente, y
otro al anterior.
anterior
DATO
NODO
siguiente
Las
listas
doblemente
enlazadas
no
pueden
recorrerse
en
ambos
Declaracin de LDE en C
typedef struct _nodo
{
int dato;
struct _nodo *siguiente;
struct _nodo *anterior;
} tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
Operaciones bsicas
Borrar elementos.
Casos
1. Aadir elemento en una lista doblemente
enlazada vaca
2. Insertar un elemento en la primera posicin de
la lista
3. Insertar un elemento en la ltima posicin de la
lista
4. Insertar un elemento a continuacin de un nodo
cualquiera de una lista
Lista
NULL
1. Lista apunta
a nodo
Lista
NULL
3. lista->siguiente
apunta a NULL
nodo
NULL
2. lista->anterior
apunta a NULL
JUAN
NULL
Nuevo nodo
a insertar
Lista
NULL
4. Nodo ya
insertado a la Lista
JUAN
NULL
1. Lista->anterior
apunta a nodo
Lista
NULL
JUAN
NODO
NULL
LUIS
2. nodo->siguiente
apunta a Lista
3. nodo->anterior
apunta a NULL
Nodo a
insertar
NULL
Resultado:
Resultado
Lista
NULL
Lista
LUISNULL
JUAN
NULL
Lista
NULL
LUIS
JUAN
NULL
NODO
2. Lista->siguiente
apunta a nodo.
IVAN
Nodo a
insertar
NUL
4. nodo->siguiente
apunta a NULL.
Resultado
Lista
NULL
Lista
LUISNULL
Lista
JUAN
NULLIVAN
NULL
Lista
NULL
LUIS
JUAN
IVAN
TINO
NULL
Lista
NULL
LUIS
JUAN
IVAN
PEDRO
NODO
Nodo a insertar
TINO
NULL
Resultado
Lista
LUIS
NULL
JUAN
PEDRO
IVAN
TINO
NULL
aplicar
enlazadas.
listas
doblemente
extremos de la lista.
Lista
LUIS
NULL
JUAN
PEDRO
IVAN
TINO
NULL
Lista ordenada
1
NULL
NULL
Lista desordenada
3
NULL
4
NULL
Lista
LUIS
Lista
Lista
JUAN
PEDRO
IVAN
TINO
NULL
NULL
Bucle
para
visualizar
los
nodos
Bucle para visualizar los nodos
indice = Lista;
while(indice->anterior)
indice=indice->anterior;
while(indice) {
printf("%d\n", indice->dato);
indice = indice->siguiente;
Casos
doblemente enlazada.
2. Eliminar el primer nodo.
3. Eliminar el ltimo nodo.
4. Eliminar un nodo intermedio.
Lista
JUAN
NULL
2. Hacemos que
lista apunte a NULL
NULL
1. Eliminamos el nodo (Free)
Lista
NULL
El resultado
ser una Lista
vaca
1. Utilizamos
el puntero
1. Hacemos
quenodo
Lista que
apunte
al nodo
a eliminar, es
apunte
a Lista->siguiente
decir en donde se encuentra
lista.
Lista
Nodo
Lista
LUIS
NULL
JUAN
PEDRO
IVAN
TINO
NULL
NULL
3. Borramos el
nodo apuntado
por nodo (free)
Resultado
Lista original
LUIS
JUAN
PEDRO
IVAN
NULL
TINO
NULL
Despus de haber
eliminado el primer
nodo de la lista
JUAN
NULL
PEDRO
IVAN
TINO
NULL
Si Lista NO apunta
al primer nodo de la
Lista:
Hacer el recorrido de
Lista hasta el primer
nodo para poder
eliminarlo
Realizar el
procedimiento
anterior para
eliminar el primer
nodo de la Lista
Nodo
Lista
JUAN
PEDRO
NULL
IVAN
TINO
NULL
NULL
3. Borramos el
nodo apuntado
por nodo (Free)
Resultado
Lista original
JUAN
PEDRO
IVAN
TINO
NULL
NULL
Despus de haber
eliminado el ltimo
nodo de la lista
JUAN
NULL
PEDRO
IVAN
NULL
Si Lista NO
apunta al ltimo
nodo de la Lista:
Hacer el
recorrido de
Lista hasta el
ltimo nodo para
poder eliminarlo
Realizar el
procedimiento
anterior para
eliminar el ltimo
nodo de la Lista
Lista
JUAN
Nodo
PEDRO
IVAN
NULL
Borramos el nodo
4. Hacemos que Nodoapuntado por >siguiente->anterior
Nodo
apunte
(Free (Nodo)) a Nodo->anterior
TINO
NULL
Resultado
JUAN
NULL
IVAN
TINO
NULL
Bibliografa recomendada
Aaron N. Tenebaum, Estructura de Datos En C, Ed. Prentice
Cair/Guardati, Estructura de Datos,
MENU
Archivos
Generalidades
Muy a menudo necesitamos almacenar
cierta
cantidad
de
datos
de
forma
datos
tenemos
que
durante
recurrir
cierto
tiempo
sistemas
almacenamiento ms econmicos.
de
Un poco de historia
Cintas
perforadas
Discos
magnticos
Proliferacin
almacenamiento
secuencial
Almacenamiento
aleatorio
Tarjetas
perforadas
Cintas
magnticas
Almacenamiento
secuencial
Un poco de historia
C se clasifican en:
y/o escrituras.
Declaracin en C
Funciones estndar
Para abrir el archivo se utiliza la funcin:
fopen
Parmetros
t: modo texto. Normalmente es el
modo por defecto. Se suele omitir.
b: modo binario.
r:
Funciones y tipos en C
Tipo FILE:
definicin
de
sta
estructura
depende
del
Funcin fopen:
Sintaxis:
FILE *fopen(char *nombre, char *modo);
Funcin fclose:
Sintaxis:
int fclose(FILE *fichero);
Funcin fgetc:
Sintaxis:
int fgetc(FILE *fichero);
Funcin fputc:
Sintaxis:
int fputc(int caracter, FILE *fichero);
Funcin feof:
Sintaxis:
int feof(FILE *fichero);
Esta funcin sirve para comprobar si se ha alcanzado el final del
archivo. Muy frecuentemente deberemos trabajar con todos los
valores almacenados en un archivo de forma secuencial, la forma
de leer todos los datos de un archivo es leer mientras no se detecte
el fin del archivo.
El valor de retorno es distinto de cero slo si no se ha alcanzado el
fin de fichero. El parmetro es un puntero a la estructura FILE del
fichero que queremos verificar.
Funcin rewind:
Sintaxis:
Void rewind(FILE *fichero)
Ejemplo
#include <stdio.h>
int main(){
FILE *fichero;
fichero = fopen("ejemplo1.c", "r");
while(!feof(fichero)) fputc(fgetc(fichero), stdout);
rewind(fichero);
while(!feof(fichero)) fputc(fgetc(fichero), stdout);
fclose(fichero);
getchar();
return 0;}
Funcin fgets:
Sintaxis:
Esta funcin est diseada para leer cadenas de caracteres. Leer hasta n-1
caracteres o hasta que lea un retorno de lnea. El parmetro n nos permite limitar
la lectura para evitar desbordar el espacio disponible en la cadena.
Funcin fputs:
Sintaxis:
La funcin
fputs
Funcin fread:
Sintaxis:
size_t fread(void *puntero, size_t tamao, size_t
nregistros, FILE *fichero);
de bytes.
Funcin fwrite:
Sintaxis:
size_t fwrite(void *puntero, size_t tamao,
size_t nregistros, FILE *fichero);
Ejemplo en C
Funcin fprintf:
Sintaxis:
Funcin fscanf:
Sintaxis:
int fscanf(FILE *fichero, const char *formato, ...);
La funcin
fscanf
scanf
Funcin fflush:
Sintaxis:
Funcin fseek:
Sintaxis:
int fseek(FILE *fichero, long int
desplazamiento,
int origen);
Esta funcin sirve para situar el cursor del fichero para leer o
escribir en el lugar deseado.
El valor de retorno es cero si la funcin tuvo xito, y un valor distinto
de cero si hubo algn error.
cambiar
el
cursor
de
calcular el desplazamiento.
Funcin ftell:
Sintxis:
long int ftell(FILE *fichero);
Bibliografa recomendada
Aaron N. Tenebaum, Estructura de Datos En C, Ed. Prentice
Cair/Guardati, Estructura de Datos,
MENU