lunes, 1 de octubre de 2007

PROGRAMA



Inserción después de un Nodo Determinado

Definición:

La Inserción después de un Nodo Determinado básicamente hace lo mismo que la inserción al principio, la única diferencia es que este recibe la posición del nodo en la que será Insertada. Este Algoritmo se usa para Inserción Ordenada que mas adelante explicaremos.

Detalle:

Primero confirma que sea posible insertar el Dato, si no es posible solo desplegara “Sobre Carga”. Si es posible insertar un dato nuevo lo posiciona en la primer posición Disponible en el arreglo Info, después compara la Nueva Posición (Npos) que le mandamos con Nill si cumple la condición el dato es insertado en la primer posición, de otra forma se posicionara en la posición que guarde Npos.

Algoritmo:


InsOrd(Inicio, Disp, Info, Indice, Elemento, Npos)

Si Disp ≠ Nill entonces:

Apuntador → Disp

Disp → Indice[Disp]

Info [Apuntador] → Elemento

Si Npos = Nill entonces:

Indice[Apuntador] → Indice[Inicio]

Indice[Inicio] → Apuntador

Si no:

Indice[Apuntador] → Indice[Npos]

Indice[Npos] → Apuntador

Si no:

Imprimir “Sobre Carga”

Salir


Inserción Ordenada

Definición:

La Inserción Ordenada busca la posición en donde será Insertado el Elemento y la posición anterior donde será Insertado, después de encontrar la posición en la que será Insertado el Elemento nos regresa ese valor y lo mandamos al método de la Inserción después de un Nodo.

Detalle:


En esta ocasión usaremos dos variables para determinar la posición deseada, comparamos si Indice[Inicio] es igual a Inicio ó si Elemento es menor al dato que se encuentra en Info[Inicio], si alguna de las dos cumple regresamos Nill, de esta manera Indicamos que el Elemento será el primero de todo el Arreglo Info, si no es así Temp tomara el valor de Inicio y Temp2 de la posición que le sigue a Inicio. Hace un ciclo hasta encontrar la posición en donde se insertara el Nuevo Elemento y va moviéndose de posición con las variables Temp y Temp2 para así determinar que posición debe de regresar.

Algoritmo:


InsOrd(Inicio, Info, Indice, Elemento)

Si Inicio = Indice[Inicio] ó Elemento <>

Regresar Nill

Temp → Indice[Inicio]

Temp2 → Indice[Temp]

Repetir mientras Temp2 ≠ Inicio

Si Elemento <>

Regresar Temp

Temp → Temp2

Temp2 → Indice[Temp2]

Regresar Temp

PROGRAMA
#include 

#include

#include

void Recorrido(char Info[8][10],int Indice[8],int Inicio,int Disp);

void InsPr(char Info[8][10],int Indice[8],int Inicio,int Disp,char Elemento[10]);

void InsOrd(char Info[8][10],int Indice[8],int Inicio,int Disp,char Elemento[10]);

void main()

{

char Info[8][10]={{"Cabeza"},{"e"},{" "},{"c"},{"i"},{"a"},{" "},{"g"}};

char Elemento[10];

int Indice[8]={5,7,6,1,0,3,-999,4};

int Inicio=0,Disp=2,Res;

cout<<"Lista Original\n"; Recorrido(Info,Indice,Inicio,Disp); cout<<"Que Numero deseas Insertar?"; gets(Elemento); InsOrd(Info,Indice,Inicio,Disp,Elemento); getch(); } void Recorrido(char Info[8][10],int Indice[8],int Inicio,int Disp) { int Apuntador=Indice[Inicio]; while(Apuntador!=Inicio) { cout<<<0) temp="Temp2;" temp2="Indice[Temp2];" disp="Indice[Disp];">


No hay comentarios: