jueves, 11 de noviembre de 2010

Operaciones básica en un Vector [ Código en C++ ]

0 comentarios
Operaciones básica en un Vector [ Código en C++ ]Hola Gente, recordando las estructuras de datos, en esta oportunidad vamos a repasar las operaciones básicas en un vector o también llamado arreglo (Array en Ingles).
Un vector es un conjunto de datos homogéneos (del mismo tipo) ordenados lógicamente y se pueden acceder a ellos mediante un indice secuencial.
Son muchas las operaciones que se pueden realizar con esta estructura pero las mas basicas son:

Agregar elementos a un vector
Modificar un el valor de una determinada posición
Eliminar un elemento
Obtener el valor de una determinada posición
Buscar si un elemento, retornar su posición si pertenece al vector
Ordenar los elementos del vector

A continuación implemento estas operaciones en el lenguaje de C++ (Ide Dev C++), espero que les sirva de mucho.
Salu2 !!.
#define MAX 100

// Estructura de Datos //
typedef int Tipo;

struct Vector
{
Tipo elem[MAX];
int n;//numero de elementos
};

// Interface //

/* Inicializa el vector "v" con n=0*/
void inicializar(Vector &v);

/* Inserta al final del vector "v" el elemento el elemento valorvalor
* si el vector esta lleno devuelve falso de lo contrario verdadero */
bool agregar(Vector &v,Tipo valor);

/* cambia el elemento de la posicion "pos" por por valorvalor
* si la pòsiicon es incorrecta devuelve falso */
bool modificar(Vector &v,Tipo valor,int pos);

/* eleimina el elemento de la posiicon "pos" */
bool eliminar(Vector &v,int pos);

/* devuelve la posicion del elemento "valor", ,
* si no lo encuentra retorna -1 */
int buscar(Vector &v,Tipo valor);

/* obtiene una copia del elemento en la posicion "pos" */
Tipo obtener(Vector &v,int pos);

/* ordena de forma ascendente, ordenamiento burbuja */
void ordenar(Vector &v);

// Operaciones //
void inicializar(Vector &v)
{
v.n=0;
}

bool agregar(Vector &v,Tipo valor)
{
if(v.n >= MAX)
return false;
v.elem[v.n]=valor;
v.n++;
}

bool modificar(Vector &v,Tipo valor,int pos)
{
if(pos<0 || pos>=v.n)
return false;
v.elem[pos]=valor;
}

bool eliminar(Vector &v,int pos)
{
if(pos<0 || pos>=v.n)
return false;
for(int i=pos;i<v.n-1;i++)
{
v.elem[i]=v.elem[i+1];
}
v.n--;
}

int buscar(Vector &v,Tipo valor)
{
int pos=-1;
for(int i=0;i<v.n && pos==-1;i++)
{
if(v.elem[i]==valor)
pos=i;
}
return pos;
}

Tipo obtener(Vector &v,int pos)
{
return v.elem[pos];
}

void ordenar(Vector &v)
{
int i,j;
Tipo temp;

for(i=0; i<v.n-1; i++)
for(j=i+1; j<v.n; j++)
{
if(v.elem[i]>v.elem[j])
{
temp=v.elem[i];
v.elem[i]=v.elem[j];
v.elem[j]=temp;
}
}
}

0 comentarios:

Publicar un comentario en la entrada