Anda di halaman 1dari 7

REPUBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUACIN


SUPERIOR
I.U.P. SANTIAGO MARIO
ESPECIALIDAD: ING. DE SISTEMAS
CATEDRA: PROGRAMACIN I

ESTRUCTURA DE DATOS

ELABORADO POR:
BR. WILKINS SILVA
C.I.: V-19.098.288
SECCIN: 47-A

MARACAIBO, NOVIEMBRE DE 2007

INDICE

1.- ARREGLOS
2.- PILAS
3.- COLAS
4.- LISTAS ENLAZADAS

DESGLOSE

1.- ARREGLOS:

Un ARREGLO es un conjunto de variables del mismo tipo que pueden ser


referenciadas a travs de un mismo nombre. La forma de identificar a un
elemento determinado es a travs de un ndice.
La declaracin
int Array[10];
Instruye al compilador a que reserve una cantidad de memoria suficiente para
almacenar 10 entidades enteras y referirse a esa memoria a traves del
identificador Array. Dado que el nmero de elementos en un arreglo suele ser
utilizado en distintos lugares de un programa, es buen estilo de programacin
el referenciarlo a travs de una constante simblica:
#define N 10
int Array[N];
Los elementos individuales del arreglo se comiena a numerar a partir del
elemento 0, asi, Array[0] individualiza al primer elemento y Array[9] al ltimo.
Los arreglos pueden ser multidimensionales, asi por ejemplo
double Matriz[10][20];
Define una region de memoria como para almacenar 200 reales en doble
precisin. La forma en que se organizan en la memoria estos 200 elementos es
la siguiente:
Matriz[0][0],
Matriz[0][1],
[1],...,...,Matriz[9][19]

Matriz[0][2],

...,

Matriz[1][0],

Matriz[1]

La inicializacin de un arreglo puede realizarse a travs de una lista, si la lista


es mas corta que el numero de elementos en el arreglo, el resto de los
elementos se inicializan a 0. Se puede obviar el tamao de un arreglo al
inicializarlo con una lista, el tamao ser el mismo que el de la lista en este
caso.
Ej:
float a[5] = {0.1, 1.2, 2.3, 3.4, 4.5};
double b[100] = {1.0};
/* los 99 restantes sern 0.0 */
int a[] = {2, 3, -5, 7}; /* equivale a a[4]={2,3,-5,7} */

Otro Ej;

/*
Utilizacin de arreglos.
Programa que cuenta cuntas veces se repite cada dgito,
cada carcter separador, y otros caracteres.

*/
#include <stdio.h>
#define ND 10
int main()
{
int c, i, nWhite = 0, nOther = 0, nDigit[ND];
for(i = 0; i < ND; i++)
nDigit[i] = 0;
while((c = getchar()) != EOF)
if(c >= '0' && c <= '9')
nDigit[c - '0']++;
else
if(c == ' ' || c == '\n' || c == '\t')
nWhite++;
else
nOther++;
for(i = 0; i < ND; i++)
printf("Dgito %d: %d\n",i,nDigit[i]);

printf("Caracteres separadores: %d\n",nWhite);


printf("Otros caracteres: %d\n",nOther);
return 0;

2. - PILAS
Una PILA es una estructura de datos homognea (elementos del mismo tipo),
secuencial y de amao variable. Slo es posible un modo de acceso a esta
estructura: a travs de la cabeza de la pila. De este modo podemos aadir un
elemento a la cabeza de la pila o extraer un elemento de la cabeza de la pila.
Debido a que las operaciones de extraccin e insercin se realizan por el
mismo extremo, el ltimo elemento en ser aadido ser el primero en ser
extrado; por ello a estas estructuras se las conoce con el nombre de LIFO
(last-in, first-out; ltimo en entrar, primero en salir).
Otras operaciones posibles sobre la pila son la creacin de una pila vaca, la
interrogacin de la misma para determinar si contiene o no algn elemento y la
destruccin de la pila.

Para implementar una pila como una estructura dinmica de datos se usa una
lista enlazada, las operaciones de extraccin e insercin en la lista (pila) se
hacen siempre sobre la cabeza de la misma.
Ej:
#ifndef _MPila_h_
#define _MPila_h_
#include "MCadena.h"
namespace MPila
{
using namespace MCadena;
typedef struct TNodo *TPila;
struct TNodo
{
TCadena val;
TPila sig;
};
typedef enum { NoError, ErrorPilaLLena,
ErrorPilaVacia} TError;
TPila CrearPila();
void DestruirPila(TPila &p);
void MeterPila(TPila &p, TCadena x, TError &error);
void SacarPila(TPila &p, TCadena &x, TError &error);
bool PilaLlena(TPila p);
bool PilaVacia(TPila p);
}

Otro Ej:
public class Pila {
NodoPila _ultimo;
//Crea una pila
public Pila() {
_ultimo = null;
}
//Mete un objeto en la pila
public void push(Object o) {
NodoPila nuevo;
nuevo = new NodoPila(o, _ultimo);
_ultimo = nuevo;
}
imo objeto de la pila
public Object pop() {
Object resultado;
resultado = null;
if (_ultimo != null) {
resultado = _ultimo.obtenerContenido();
_ultimo = _ultimo.obtenerAnterior();

}
return resultado;
}
//esto es una clase interna
class NodoPila {
Object _contenido;
NodoPila _anterior;
public NodoPila(Object contenido, NodoPila anterior) {
_contenido = contenido;
_anterior = anterior;
}
public NodoPila obtenerAnterior() {
return _anterior;

3.- COLAS
Una COLA es una estructura de datos, caracterizada por ser una secuencia de
elementos en la que la operacin de insercin push se realiza por un extremo y
la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO
(del ingls First In First Out), debido a que el primer elemento en entrar ser
tambin el primero en salir.
El tipo cola representa la idea que tenemos de cola en la vida real. La cola para
subir al autobs est compuesta de elementos (personas), que dispone de dos
extremos comienzo y fin. Por el comienzo se extraer un elemento cuando
haya comprado el billete para su viaje, y si llega una nueva persona con
intencin de usar el autobs, tendr que colocarse al final y esperar que todos
los elementos situados antes que l abandonen la cola.
4.- LISTAS ENLAZADAS
La forma ms simple de estructura dinmica es la lista enlazada (lista abierta o
lista ligada). En esta forma los nodos se organizan de modo que cada uno
apunta al siguiente, y el ltimo no apunta a nada, es decir, el puntero del nodo
siguiente del ltimo nodo toma el valor nulo (NULL).
En las listas abiertas existe un nodo especial: el primero, ese nodo deber
poder ser referenciado directamente en cualquier momento (normalmente con
una variable de tipo puntero). Esa referencia al primer nodo es muy importante
ya que mediante ella podemos acceder a toda la lista.

Lista ligada con tres valores enteros


Mediante asignacin dinmica de memoria podemos hacer que la lista vare de
tamao, aumentando o disminuyendo, segn las necesidades del programa
que la utilice con la nica restriccin de que haya memoria disponible.
Inicialmente, cuando una lista an no dispone de ningn nodo, o cuando se
borran todos los nodos de los que dispone, diremos que la lista esta vaca, en
ese caso la referencia al primer nodo tendr un valor nulo (puntero a NULL).
Es muy importante que nuestro programa nunca pierda el valor de la referencia
al primer elemento, ya que sino existe ninguna copia de ese valor, y se pierde,
ser imposible acceder al primer nodo y por tanto al resto de la lista y no se
podr liberar el espacio de memoria que ocupa.
TIPOS DE LISTAS
Lista lineal: En la cual el ltimo nodo apunta a NULL.
Lista circular: El ltimo nodo apunta al primero.
Lista doblemente enlazada: Los nodos, aparte de tener un nodo
siguiente, tiene un nodo
llamado anterior el cual apunta al anterior nodo.
Ej:
/*declaracin de la estructura nodo de la lista*/
struct nodo
{
int dato;
struct nodo *siguiente;
};
...
/*declaracin de la referencia (puntero) al primer nodo de la lista*/
struct nodo *primero;

Anda mungkin juga menyukai