Estructura de datos (Parte 4)
Estructuras de datos
Es una forma particular de organizar datos en una computadora para que puedan ser utilizados de manera eficiente. Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son altamente especializados para tareas específicas.
Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indización de Internet. Por lo general, las estructuras de datos eficientes son clave para diseñar algoritmos eficientes. Algunos métodos formales de diseño y lenguajes de programación destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave de organización en el diseño de software.
Arreglos
Cada uno de esos elementos se distinguen por un índice o subíndice al que se puede apuntar con un puntero para acceder a dicha posición del array. Además, también se podría escribir código para acceder de forma aleatoria a estos elementos de los que se compone el arreglo.
Estructuras
La estructura es una colección de variables, la cual puede poseer distintos tipos de datos (a diferencia de los arreglos que solamente pueden tener un solo tipo de dato). Es un tipo de dato definido por el usuario. Son también conocidas como Registros. Ayudan a organizar y manejar datos complicados en programas debido a que agrupan diferentes tipos de datos a los que se los trata como una sola unidad en lugar de ser vistas como unidades separadas. La declaración de estructuras en programas C, es un nuevo tipo de datos denominado tipo Estructura y es posible declarar una variable de este tipo una vez que declare o defina el tipo estructura de la siguiente manera:
Struct Identificador_ tipo_estructura
{ Tipo miembro_1; /*Declaración de los miembros*/
….
Tipo miembro_n;
};
Ejemplo. Hacer una estructura en C que registre los datos de cinco personas como: Nombre, apellido, edad, sexo y teléfono.
#include <iostream>
using namespace std;
struct persona{
char
nombre[15];
char
apellido[15];
int edad;
char sexo[15];
int telefono;
};
int main(){
persona amigo[5];
for (int i = 0; i
< 5; i++){
cout
<<"Escriba el Nombre "<<i+1<<":";
cin >> amigo[i].nombre;
cout
<<"\nEscriba el Apellido "<<i+1<<":";
cin >> amigo[i].apellido;
cout
<<"\nEscriba la Edad de "<<i+1<<":";
cin >> amigo[i].edad;
cout
<<"\nEscriba el sexo "<<i+1<<":";
cin >> amigo[i].sexo;
cout
<<"\nEscriba el Telefono de "<<i+1<<":";
cin >> amigo[i].telefono;
cout
<<endl;
}
cout<<"El registro de personas que se introdujeron es: \n\n";
for (int i = 0; i
< 5; i++){
cout<<"\t"<<amigo[i].nombre;
cout<<"\t"<<amigo[i].apellido;
cout<<"\t"<<amigo[i].edad;
cout<<"\t"<<amigo[i].sexo;
cout<<"\t"<<amigo[i].telefono<<"\n\n";
}
return 0;
}
Listas
una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que 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 o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
Una lista enlazada es un tipo de dato autorreferenciado
porque contienen un puntero o enlace a otro dato del mismo tipo. Las
listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto
de la lista en tiempo constante (suponiendo que dicho punto está previamente
identificado o localizado), pero no permiten un acceso aleatorio.
Ejemplo. El siguiente código es para que ingreses números, eligiendo la opción en un menú
#include <stdlib.h>
#include <conio.h>
struct nodo{
int info;
nodo *sgt;
};
void agrega(nodo **cab, nodo **fin);
void muestra(nodo *cab);
int main()
{ nodo *c=NULL,*f=NULL; //puntero de cabecera, y puntero de fin de lista
int opcion;
do{
system("cls");
cout<<"1) Ingresa un dato (numero entero)."<<endl;
cout<<"2) Muestra los datos ingresados."<<endl;
cout<<"ingrese opcion"<<endl;
cin>>opcion;
switch(opcion){
case 0: exit(0);break;
case 1: agrega(&c, &f);break;
case 2: muestra(c);break;
}
}
while(opcion!=0);
system("PAUSE");
return 0;
}
void agrega(nodo **cab, nodo **fin){
int num;
cout<<"ingrese informacion"<<endl;
cin>>num;
if((*cab)==NULL){
*cab = new nodo;
(*cab)->info =num;
(*cab)->sgt=NULL;
(*fin)=(*cab);
}else{
(*fin)->sgt=new nodo;
(*fin)->sgt->info=num;
(*fin)=(*fin)->sgt;
(*fin)->sgt=NULL;
}
}
void muestra(nodo *cab){
cout<<"elementos en la lista"<<endl;
nodo* temp;
temp=cab;
while ( temp != NULL){
cout<<temp->info<<" ";
temp=temp->sgt;
}
getche();
}
Comentarios
Publicar un comentario