Estructura de Datos
Estructura de Datos
Estructura de Datos
CARRERA DE COMPUTACIÓN
ESTRUCTURA DE DATOS
TEMA:
AUTOR:
MARIO G. VALLEJO REINOSO
FACILITADOR:
ÍNDICE
ÍNDICE .......................................................................................................................................... 2
I. INTRODUCCION ............................................................................................................................. 3
BIBLIOGRAFÍA ...................................................................................................................................... 30
3
I. INTRODUCCION
Todas las estructuras de datos vistas hasta ahora son estáticas, esto es, no
puede cambiar su tamaño durante la ejecución del programa. Cuando las
estructuras de datos cambian su tamaño durante la ejecución del programa se
utilizan las estructuras dinámicas de datos. Ciertas estructuras de datos como
pilas, colas y listas se utilizan la memoria dinámica.
4
2.2. PILAS
Dado que las operaciones de insertar y eliminar se realizan por un solo extremo
(el superior), los elementos solo pueden eliminarse en orden inverso al que se
insertan en la pila. El último elemento que se pone en la pila es el primero que
se puede sacar; por ello, a estas estructuras se les conoce como LIFO (last-in,
first-out).
2.3. COLAS
Una cola es una estructura de datos cuyos elementos mantienen un orden tal
que sólo se pueden añadir elementos por un extremo, final de la cola, y
eliminar o extraer por el otro extremo, llamado frente. Los elementos se
insertan por el extremo final, y se suprimen por el otro extremo, llamado
frente(Joyanes L y Zanohero I 2009).
Se inserta por un sitio y se saca por otro, en el caso de la cola simple se inserta
por el final y se saca por el principio. Para gestionar este tipo de cola hay que
recordar siempre cual es el siguiente elemento que se va a leer y cuál es el
último elemento que se ha introducido. (Joyanes L y Zanohero I 2009).
9
Los dos extremos de una bicola se identifican con los apuntadores frente y final
(mismos nombres que en una cola). Las operaciones básicas que definen una
bicola son una ampliación de las operaciones de una cola:
2.4. LISTAS
Según Joyanes L (2008). Una lista lineal es un conjunto de elementos de un
tipo de dato que puedan variar en número y donde cada elemento tiene un
único predecesor y un único sucesor o siguiente, excepto el primero y último de
la lista .esta es una definición muy general que incluye los ficheros y vectores.
como son los casos de las de esta forma el apuntador no corre el riesgo de
apuntar a una dirección que no sea la de un nodo que si pertenece a la lista.
abiertas,
Según Joyanes L y Zanohero I (2009).Son las listas en las que cada nodo
tiene un enlace con el elemento siguiente y con el anterior. Una ventaja que
tienen es que pueden recorrerse en ambos sentidos, ya sea para efectuar una
operación con cada elemento o para insertar/actualizar y borrar. La otra ventaja
es que las búsquedas son algo más rápidas puesto que ya hace referencia al
elemento anterior. Su inconveniente es que ocupan más memoria por nodo que
una lista simple. Tanto el siguiente al último, como el preliminar al primero
apuntan a la lista vacía.
Según Deitel P y Deitel H (2008). Una lista enlazada requiere realizar la gestión
de los elementos contenidos en ella. Estos controles se manifiestan en forma
de las operaciones básicas, especificadas al definir el tipo abstracto lista, que
tendrán las siguientes funciones:
Declarar los tipos nodo y puntero a nodo.
Inicializar o crear.
Insertar elementos en una lista.
Eliminar elementos de una lista.
Buscar elementos de una lista (comprobar la existencia de elementos en
una lista).
Recorrer una lista enlazada (visitar cada nodo de la lista).
Comprobar si la lista está vacía.
#include<iostream>
#include<windows.h>
nodo*siguiente;
};
pnodo aux=pila; // creamos una variable aux de tipo pnodo sea igual a pila
int main(){
system("cls");
cout<<"|+++++++++++++++++++++++++++++|"<<endl;
cout<<"|+++++++++++++++++++++++++++++|"<<endl;
cin>>opc;
}while(opc<1||opc>3 );
goto MENU;
}else{
cout<<"la pila esta vacia "; // no existe ningún nodo dentro de pila
getch();
goto MENU;
else{
goto fin;
fin:
return 0;
}
21
#include<iostream>
#include<windows.h>
#include<conio.h>
struct nodo{ // creamos una estructura nodo con un campo dato dato
nodo*sig;
};
}else{
system("cls");
cin>>opc;
}while(opc<1 || opc>3);
system("cls");
goto MENU;
} if(opc==2){ // si la op es igual es a 2
getch();
goto MENU;
}else{
getch();
goto MENU;
else{
goto FIN;
FIN:
return 0; }
24
#include<iostream>
#include<conio.h>
#include<stdlib.h>
nodo *sig;
};
pnodo aux = lista; // declaramos dos nodos aux e igualar a lista al primero
de
while((aux != NULL) && (aux->dato < a)){ // insertamos datos de forma ordena
pnodo aux = lista; //declaramos una variable aux de tipo pnodo sea =lista
if( aux!=NULL){
cout<<aux->dato<<" , ";
aux = aux->sig;
}else{
pnodo act = lista; //declaramos una variable act tipo pnodo sea=lista
if(act->dato == n){
elemento = true;
act = act->sig;
else{
aux = lista;
ult = aux;
aux = aux->sig;
if(aux == NULL){
lista = lista->sig;
delete aux;
}else{
ult->sig = aux->sig;
delete aux;
}
27
int main(){
int dato;
do{
system("cls");
cout<<" 5. salir"<<endl;
cin>>op;
}while(op<1||op>5);
if(op==1){
cin>>dato;
insertarLista(lista,dato);
getch();
goto menu;
}if(op==2){
mostrarLista(lista);
getch();
goto menu;
28
}if(op==3){
cin>>dato;
buscarLista(lista,dato);
getch();
goto menu;
}if(op==4){
cin>>dato;
eliminarNodo(lista,dato);
system("pause");
goto menu;
}else{
} return 0; }
29
IV. CONCLUSIONES
El uso de los TDA nos ayuda a solucionar un sin número de problemas que
facilitan a desarrollar programas pero no obstante estas implementaciones
repercuten de manera negativa la implementación y comprensión. Estas
herramientas son complejas por lo que requiere tiempo y dedicación para la
correcta utilización en las pilas listas y colas. Por esto la memoria dinámica nos
permite trabajar mediante la utilización de punteros y eso a su vez gestionar el
espacio disponible dentro de la memoria y así crear o eliminar variable que
necesitemos durante la ejecución de un programa.
Las listas son estructuras de datos fundamentales, puede ser usada para
implementar otras estructuras de datos. Consiste en una secuencia de nodos,
en donde se guardan campos de datos arbitrarios y una o dos referencias,
enlaces o punteros al nodo anterior o posterior. El principal beneficio de las
listas enlazadas respecto a los vectores convencionales es que el orden de los
elementos enlazados puede ser diferente al orden de almacenamiento en la
memoria, permitiendo que el orden de recorrido de la lista sea diferente al de
almacenamiento
30
BIBLIOGRAFÍA