<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Diana Molina</title>
	<atom:link href="http://dmmolina.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dmmolina.wordpress.com</link>
	<description>blog personal WordPress.com weblog</description>
	<lastBuildDate>Fri, 18 Jun 2010 03:49:51 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dmmolina.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Diana Molina</title>
		<link>http://dmmolina.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dmmolina.wordpress.com/osd.xml" title="Diana Molina" />
	<atom:link rel='hub' href='http://dmmolina.wordpress.com/?pushpress=hub'/>
		<item>
		<title>LISTAS ENLAZADAS DEFENICION Y EJEMPLOS</title>
		<link>http://dmmolina.wordpress.com/2008/07/13/listas-enlazadas-defenicion-y-ejemplos/</link>
		<comments>http://dmmolina.wordpress.com/2008/07/13/listas-enlazadas-defenicion-y-ejemplos/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 20:53:39 +0000</pubDate>
		<dc:creator>dmmolina</dc:creator>
				<category><![CDATA[Estructura de datos]]></category>
		<category><![CDATA[fundamentos informaticos]]></category>
		<category><![CDATA[DianaMolina]]></category>
		<category><![CDATA[loja]]></category>
		<category><![CDATA[UTPL]]></category>

		<guid isPermaLink="false">http://dmmolina.wordpress.com/?p=42</guid>
		<description><![CDATA[Què es una lista?Una lista enlazada es un conjunto de elementos llamados nodos en los que cada uno de ellos contiene un dato y también la dirección del siguiente nodo,donde el orden de los mismos se establece mediante punteros. La idea básica es que cada componente de la lista incluya un puntero que indique donde [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=42&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Què es una lista?</strong><span><span>Una lista enlazada es un conjunto de elementos </span></span><span id="more-42"></span></p>
<p><span><span>llamados nodos en los que cada uno de ellos contiene un dato y también la dirección del siguiente nodo,</span></span>donde el orden de los mismos se <span class="search_hit">es</span>tablece mediante punteros.<span><span><br />
</span></span>La idea básica <span class="search_hit">es</span> <span class="search_hit">que</span> cada componente de la <span class="search_hit">lista</span> incluya un puntero <span class="search_hit">que</span> indi<span class="search_hit">que</span> donde puede encontrarse el siguiente componente por lo <span class="search_hit">que</span> el orden relativo de <span class="search_hit">es</span>tos puede ser fácilmente alterado modificando los punteros lo <span class="search_hit">que</span> permite, a su vez, añadir o suprimir elementos de la <span class="search_hit">lista</span>.  <span><span> El primer elemento de la lista es la cabecera, que sólo contiene un puntero que señala el primer elemento de la lista.<br />
El último nodo de la lista apunta a NULL (nulo) porque no hay más nodos en la lista. Se usará el término NULL para designar el final de la lista. </span></span></p>
<h3>Listas Enlazadas frente a Arrays</h3>
<p>Las listas enlazadas tienen las siguiente ventajas sobre los arrays:</p>
<ul>
<li>No requieren memoria extra para soportar la expansión. Por el contrario, los arrays requieren memoria extra si se necesita expandirlo (una vez que todos los elementos tienen datos no se pueden añadir datos nuevos a un array).</li>
<li>Ofrecen una inserción/borrado de elementos más rápida que sus operaciones equivalentes en los arrays. Sólo se tienen que actualizar los enlaces después de identificar la posición de inserción/borrado. Desde la perspectiva de los arrays, la inserción de datos requiere el movimiento de todos los otros datos del array para crear un elemento vacío. De forma similar, el borrado de un dato existente requiere el movimiento de todos los otros datos para eliminar el elementovacío.</li>
</ul>
<p>En contraste, los arrays ofrecen las siguiente ventajas sobre las listas enlazadas:</p>
<ul>
<li>Los elementos de los arrays ocupan menos memoria que los nodos porque no requieren campos de enlace.</li>
<li>Los arrays ofrecen un aceso más rápido a los datos, medante índices basados en enteros.</li>
</ul>
<p>Las listas enlazadas son más apropiadas cuando se trabaja con datos dinámicos. En otras palabras, inserciones y borrados con frecuencia. Por el contrario, los arrays son más apropiados cuando los datos son estáticos (las inserciones y borrados son raras). De todas formas, no olvide que si se queda sin espacio cuando añade ítems a un array, debe crear un array más grande, copiar los datos del array original el nuevo array mayor y elimiar el original. Esto cuesta tiempo, lo que afecta especialmente al rendimiento si se hace repetidamente.</p>
<p>Mezclando una lista de enlace simple con un array uni-dimensional para acceder a los nodos mediante los índices del array no se consigue nada. Gastará más memoria, porque necesitará los elementos del array más los nodos, y tiempo, porque necesitará mover los ítems del array siempre que inserte o borre un nodo. Sin embargo, si es posible integrar el array con una lista enlazada para crear una estructura de datos úti.</p>
<p>Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas y Listas Enlazadas Circulares.</p>
<p>Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme  tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C, C++ o Java disponen de referencias para crear listas enlazadas.</p>
<p>Las operaciones que podemos realizar sobre una lista enlazada son las siguientes:</p>
<ul>
<li><strong>Recorrido.</strong> Esta operación consiste en visitar cada uno de los nodos que forman la lista . Para recorrer todos los nodos de la lista, se comienza con el primero, se toma el valor del campo liga para avanzar al segundo nodo, el campo liga de este nodo nos dará la dirección del tercer nodo, y así sucesivamente.</li>
<li><strong>Inserción.</strong> Esta operación consiste en agregar un nuevo nodo a la lista. Para esta operación se pueden considerar tres casos:
<ul>
<li>Insertar un nodo al inicio.</li>
<li>Insertar un nodo antes o después de cierto nodo.</li>
<li>Insertar un nodo al final.</li>
</ul>
</li>
<li><strong>Borrado. </strong>La operación de borrado consiste en quitar un nodo de la lista, redefiniendo las ligas que correspondan. Se pueden presentar cuatro casos:
<ul>
<li>Eliminar el primer nodo.</li>
<li>Eliminar el último nodo.</li>
<li>Eliminar un nodo con cierta información.</li>
<li>Eliminar el nodo anterior o posterior al nodo cierta con información.</li>
</ul>
</li>
<li><strong>Búsqueda. </strong>Esta operación consiste en visitar cada uno de los nodos, tomando al campo liga como puntero al siguiente nodo a visitar.</li>
</ul>
<p><strong>Figura 1. Esquema de un nodo y una lista enlazada.</strong></p>
<p><a class="image" title="Lista.png" href="http://wiki.gnome.cl/Imagen:Lista.png"><img longdesc="Lista.png" src="http://wiki.gnome.cl/images/e/e0/Lista.png" alt="Lista.png" width="304" height="129" /></a></p>
<p><strong>LISTA ENLAZADA SIMPLE</strong></p>
<p>La lista enlazada básica es la <strong>lista enlazada simple</strong> la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo.</p>
<p><a class="image" title="Singly-linked-list.svg" href="http://es.wikipedia.org/wiki/Imagen:Singly-linked-list.svg"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Singly-linked-list.svg/408px-Singly-linked-list.svg.png" border="0" alt="Singly-linked-list.svg" width="408" height="41" /></a></p>
<p>He aquì tenemos un ejemplo de una lista enlazada simple</p>
<p>//DECLARACIÒN DE PROTOTIPOS</p>
<p>#include&lt;alloc.h&gt;<br />
#include&lt;stdlib.h&gt;<br />
#include&lt;conio.h&gt;<br />
#include&lt;iostream.h&gt;<br />
//Declaramosla estructura<br />
typedef struct nodo<br />
{<br />
int dato;<br />
struct nodo * siguiente;<br />
}tipoNodo;<br />
//reservamos el espacio de memoria<br />
tipoNodo *nuevo_elemento();</p>
<p>//Operaciones que vamos a arealizar<br />
void crear();<br />
void insertar();<br />
void insertar_inicio();<br />
void insertar_ordenado();<br />
void insertar_final();<br />
void presentar();<br />
void modificar();<br />
void buscar();<br />
void ordenar();<br />
void ordenar_ascendente();<br />
void ordenar_descendente();<br />
void eliminar();<br />
void eliminar_cabeza();</p>
<p>//FUNCION PARA EL CUADRO<br />
void cuadro(int x1,int y1, int x2, int y2, char simb);</p>
<p>//NUESTRA CABEZA<br />
tipoNodo *cab;</p>
<p>tipoNodo *nuevo_elemento()<br />
{<br />
tipoNodo *nodo1;<br />
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));<br />
if(!nodo1)<br />
cout&lt;&lt;&#8221;No se ha reservado memoria para el nuevo &#8220;;<br />
return nodo1;<br />
}</p>
<p>void  main()<br />
{<br />
clrscr();<br />
crear();<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,35,56,&#8217;²&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ LISTAS ENLAZADAS ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  INSERTAR\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  MODIFICAR\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  BUSCAR\n&#8221;;<br />
gotoxy(12,17);cout&lt;&lt;&#8221; [4]:  ORDENAR\n&#8221;;<br />
gotoxy(12,19);cout&lt;&lt;&#8221; [5]:  ELIMINAR\n&#8221;;<br />
gotoxy(12,21);cout&lt;&lt;&#8221; [6]:  PRESENTAR\n&#8221;;<br />
gotoxy(12,24);cout&lt;&lt;&#8221; [7]:  SALIR DEL MENU\n&#8221;;</p>
<p>gotoxy(12,27);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,27);cin&gt;&gt;opc;</p>
<p>switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertar();getch();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
modificar();getch();break;<br />
case&#8217;3&#8242;:<br />
clrscr();<br />
buscar();getch();break;<br />
case&#8217;4&#8242;:<br />
clrscr();<br />
ordenar();getch();break;<br />
case&#8217;5&#8242;:<br />
clrscr();<br />
eliminar();getch();break;</p>
<p>case&#8217;6&#8242;:<br />
clrscr();<br />
presentar();getch();break;</p>
<p>}</p>
<p>}while(opc!=&#8217;7&#8242;);</p>
<p>getch();</p>
<p>}<br />
//CREANDO LA CABEZA<br />
void crear()<br />
{<br />
clrscr();<br />
cab=nuevo_elemento();<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;Ingrese valor de cabeza :\t&#8221;;<br />
cin&gt;&gt;cab-&gt;dato;<br />
cab-&gt;siguiente=NULL;<br />
getch();<br />
}<br />
//MENU DE INSERTAR<br />
void insertar()<br />
{<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,35,56,&#8217;²&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ LISTAS ENLAZADAS ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  INSERTAR AL INICIO\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  insertar AL FINAL\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  INSERTAR ORDENADO\n&#8221;;<br />
gotoxy(12,18);cout&lt;&lt;&#8221; [4]:  REGRESAR\n&#8221;;</p>
<p>gotoxy(12,21);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,21);cin&gt;&gt;opc;</p>
<p>switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertar_inicio();getch();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
insertar_final();getch();break;<br />
case&#8217;3&#8242;:<br />
clrscr();<br />
insertar_ordenado();getch();break;</p>
<p>}</p>
<p>}while(opc!=&#8217;4&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>//INSERATAR AL INICIO<br />
void insertar_inicio()<br />
{<br />
clrscr();<br />
nodo *pAuxElem;<br />
nodo *recorre;<br />
pAuxElem=(tipoNodo*) malloc(sizeof(tipoNodo));<br />
while(recorre-&gt;siguiente!=NULL)<br />
{<br />
recorre=recorre-&gt;siguiente;<br />
}<br />
int n;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;n;<br />
pAuxElem-&gt;dato=n;<br />
pAuxElem-&gt;siguiente=cab;<br />
cab=pAuxElem;<br />
}</p>
<p>//INSERTAR AL FINAL<br />
void insertar_final()<br />
{<br />
clrscr();<br />
nodo *elem;<br />
elem=nuevo_elemento();<br />
clrscr();<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;elem-&gt;dato;<br />
nodo *recorrer;<br />
recorrer=cab;<br />
while(recorrer-&gt;siguiente!=NULL)<br />
recorrer=recorrer-&gt;siguiente;<br />
recorrer-&gt;siguiente=elem;<br />
elem-&gt;siguiente=NULL;<br />
getch();<br />
}<br />
//INSERATAR ORDENADO<br />
void insertar_ordenado()<br />
{<br />
clrscr();<br />
nodo *pAuxElem;<br />
nodo *post;<br />
nodo *recorre;<br />
pAuxElem=(tipoNodo*) malloc(sizeof(tipoNodo));<br />
post=(tipoNodo*) malloc(sizeof(tipoNodo));<br />
int n;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;n;<br />
if(n&lt;cab-&gt;dato)<br />
{</p>
<p>post=cab-&gt;siguiente;<br />
while((pAuxElem-&gt;dato&gt;post-&gt;dato)&amp;&amp;(post-&gt;siguiente!=NULL))<br />
{<br />
post=post-&gt;siguiente;<br />
}<br />
if(post-&gt;siguiente!=NULL)<br />
{<br />
pAuxElem-&gt;siguiente=cab;<br />
cab=pAuxElem;<br />
}<br />
else<br />
{<br />
pAuxElem-&gt;siguiente=NULL;<br />
post-&gt;siguiente=pAuxElem;<br />
}</p>
<p>}<br />
else<br />
{<br />
while(recorre-&gt;siguiente!=NULL)<br />
{<br />
recorre=recorre-&gt;siguiente;<br />
}<br />
pAuxElem-&gt;dato=n;<br />
pAuxElem-&gt;siguiente=cab;<br />
cab=pAuxElem;<br />
}<br />
/*cout&lt;&lt;&#8221;Ingrese un numero&#8221;;<br />
cin&gt;&gt;n;<br />
if(n&gt;cab-&gt;dato)<br />
{<br />
insertar_inicio(n);<br />
}<br />
else<br />
{<br />
nodo *aux;<br />
nodo *ant;<br />
aux=cab-&gt;siguiente;<br />
while((aux!=NULL)(n&gt;aux-&gt;dato))<br />
{<br />
ant=aux;<br />
aux=aux-&gt;siguiente<br />
}<br />
nodo *nuevo;<br />
nuevo=crear_nuevo();<br />
nuevo-&gt;dato=n;<br />
ant-&gt;siguiente=nuevo;<br />
nuevo-&gt;siguiente=aux;<br />
}*/</p>
<p>}<br />
//PARA MODIFICAR<br />
void modificar()<br />
{<br />
clrscr();<br />
nodo *elem;<br />
nodo *ele;<br />
gotoxy(10,25);cout&lt;&lt;&#8221;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n&#8221;;<br />
gotoxy(10,26);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,27);cout&lt;&lt;&#8221;ºMODIFICAR NUMERO DE LISTA º\n&#8221;;<br />
gotoxy(10,28);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,29);cout&lt;&lt;&#8221;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼\n&#8221;;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;INGRESE EL VALOR A MODIFICAR :\t&#8221;;<br />
cin&gt;&gt;elem-&gt;dato;<br />
nodo *recorrer;<br />
recorrer=cab;<br />
while(recorrer!=NULL)<br />
{</p>
<p>if(recorrer-&gt;dato==elem-&gt;dato)<br />
{<br />
clrscr();<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;ele-&gt;dato;</p>
<p>recorrer-&gt;dato=ele-&gt;dato;<br />
}<br />
recorrer=recorrer-&gt;siguiente;</p>
<p>}<br />
getch();<br />
}<br />
//PARA BUSCAR<br />
void buscar()<br />
{<br />
clrscr();<br />
nodo *elem;<br />
gotoxy(10,25);cout&lt;&lt;&#8221;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n&#8221;;<br />
gotoxy(10,26);cout&lt;&lt;&#8221;º                           º\n&#8221;;<br />
gotoxy(10,27);cout&lt;&lt;&#8221;ºBUSCADOR DE NUMERO DE LISTAº\n&#8221;;<br />
gotoxy(10,28);cout&lt;&lt;&#8221;º                           º\n&#8221;;<br />
gotoxy(10,29);cout&lt;&lt;&#8221;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼\n&#8221;;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;INGRESE EL VALOR A BUSCAR :\t&#8221;;<br />
cin&gt;&gt;elem-&gt;dato;<br />
nodo *recorrer;<br />
recorrer=cab;<br />
while(recorrer!=NULL)<br />
{</p>
<p>if(recorrer-&gt;dato==elem-&gt;dato)<br />
{<br />
clrscr();<br />
gotoxy(20,20);<br />
cout&lt;&lt;elem-&gt;dato&lt;&lt;&#8221;:\t&#8221;;<br />
cout&lt;&lt;&#8221;ESTE ELEMENTO SI EXISTE&#8221;;<br />
recorrer-&gt;dato=elem-&gt;dato;<br />
}</p>
<p>recorrer=recorrer-&gt;siguiente;</p>
<p>}</p>
<p>getch();<br />
}<br />
//ORDENAR<br />
void ordenar()<br />
{<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,25,56,&#8217;²&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ ORDENAR  LAS LISTAS ENLAZADAS ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  ORDENAR ASCENDENTE\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  ORDENAR DESCENDENTE\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  REGRESAR\n&#8221;;</p>
<p>gotoxy(12,17);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,17);cin&gt;&gt;opc;<br />
switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
ordenar_ascendente();getch();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
ordenar_descendente();getch();break;</p>
<p>}</p>
<p>}<br />
while(opc!=&#8217;3&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>void ordenar_ascendente()<br />
{<br />
nodo* aux;<br />
nodo* temp;<br />
int vaux;<br />
aux=(tipoNodo *)malloc(sizeof(tipoNodo));<br />
temp=(tipoNodo *)malloc(sizeof(tipoNodo));<br />
aux=cab;<br />
while (aux!=NULL)<br />
{<br />
temp=aux;<br />
while(temp-&gt;siguiente!=NULL)<br />
{<br />
temp=temp-&gt;siguiente;<br />
if(aux-&gt;dato&gt;temp-&gt;dato)<br />
{<br />
vaux=aux-&gt;dato;<br />
aux-&gt;dato=temp-&gt;dato;<br />
temp-&gt;dato=vaux;<br />
}<br />
}<br />
aux=aux-&gt;siguiente;<br />
}<br />
}</p>
<p>void ordenar_descendente()<br />
{<br />
nodo* aux;<br />
nodo* temp;<br />
int vaux;<br />
aux=(tipoNodo *)malloc(sizeof(tipoNodo));<br />
temp=(tipoNodo *)malloc(sizeof(tipoNodo));<br />
aux=cab;<br />
while (aux!=NULL)<br />
{<br />
temp=aux;<br />
while(temp-&gt;siguiente!=NULL)<br />
{<br />
temp=temp-&gt;siguiente;<br />
if(aux-&gt;dato&lt;temp-&gt;dato)<br />
{<br />
vaux=aux-&gt;dato;<br />
aux-&gt;dato=temp-&gt;dato;<br />
temp-&gt;dato=vaux;<br />
}<br />
}<br />
aux=aux-&gt;siguiente;<br />
}<br />
}<br />
//ELIMINAR<br />
void eliminar()<br />
{<br />
presentar();<br />
nodo *eliminar;<br />
//    nodo *recorrer;<br />
nodo *asigna;<br />
gotoxy(10,25);cout&lt;&lt;&#8221;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n&#8221;;<br />
gotoxy(10,26);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,27);cout&lt;&lt;&#8221;ºINSERTAR NUMERO A ELIMINARº\n&#8221;;<br />
gotoxy(10,28);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,29);cout&lt;&lt;&#8221;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼\n&#8221;;<br />
gotoxy(10,31);cout&lt;&lt;&#8221;Ingrese el n—mero a eliminar\t&#8221;;<br />
cin&gt;&gt;eliminar-&gt;dato;<br />
//    recorrer=cab;<br />
if (eliminar-&gt;dato==cab-&gt;dato)<br />
{</p>
<p>eliminar_cabeza();<br />
}</p>
<p>else<br />
{<br />
nodo *anterior=cab;<br />
nodo * aux=cab-&gt;siguiente;</p>
<p>while((aux!=NULL)&amp;&amp;(aux-&gt;dato!=eliminar-&gt;dato))<br />
{<br />
anterior=aux;<br />
aux=aux-&gt;siguiente;<br />
}<br />
if(aux!=NULL)<br />
{<br />
anterior-&gt;siguiente=aux-&gt;siguiente;<br />
aux-&gt;siguiente=NULL;<br />
free(aux);<br />
}<br />
else<br />
{<br />
gotoxy(10,33);<br />
cout&lt;&lt;&#8221;NO SE ENCUENTRA&#8221;;<br />
}<br />
}</p>
<p>}<br />
//ELIMINAR CABEZA<br />
void eliminar_cabeza()<br />
{<br />
nodo *aux;<br />
aux=cab;<br />
cab=cab-&gt;siguiente;<br />
aux-&gt;siguiente=NULL;<br />
free(aux);<br />
}<br />
//PRESENTAR LA LISTA<br />
void presentar()<br />
{<br />
clrscr();<br />
int f=10;<br />
nodo *recorrer;<br />
recorrer=cab;<br />
gotoxy(20,f);<br />
while(recorrer!=NULL)<br />
{<br />
gotoxy(20,f);<br />
cout&lt;&lt;recorrer-&gt;dato;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
recorrer=recorrer-&gt;siguiente;<br />
f=f+2;<br />
}<br />
getch();</p>
<p>}<br />
//ESTA FUNCION PERMITE PRESENTAR LOS BORDES DE UN CUADRO<br />
void cuadro(int x1,int y1, int x2, int y2, char simb)<br />
{<br />
for (int i1=y1;i1&lt;=y2;i1++)<br />
{<br />
gotoxy(i1,x1);cout&lt;&lt;simb;<br />
gotoxy(i1,x2);cout&lt;&lt;simb;<br />
}<br />
for (int i2=x1;i2&lt;=x2;i2++)<br />
{<br />
gotoxy(y1,i2);cout&lt;&lt;simb;<br />
gotoxy(y2,i2);cout&lt;&lt;simb;<br />
}<br />
}</p>
<p><strong>LISTAS ENLAZADAS DOBLES</strong></p>
<p>Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL o a la lista vacía si es el primer nodo; y otro que apunta al siguiente nodo siguiente, o apunta al valor NULL o a la lista vacía si es el último nodo.</p>
<p><a class="image" title="Doubly-linked-list.svg" href="http://es.wikipedia.org/wiki/Imagen:Doubly-linked-list.svg"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Doubly-linked-list.svg/610px-Doubly-linked-list.svg.png" border="0" alt="Doubly-linked-list.svg" width="610" height="41" /></a></p>
<p><img src="/DOCUME%7E1/ESTUDI%7E1/CONFIG%7E1/Temp/moz-screenshot-10.jpg" alt="" /></p>
<p><img src="/DOCUME%7E1/ESTUDI%7E1/CONFIG%7E1/Temp/moz-screenshot-7.jpg" alt="" /></p>
<p><img src="/DOCUME%7E1/ESTUDI%7E1/CONFIG%7E1/Temp/moz-screenshot-5.jpg" alt="" /></p>
<p><img src="/DOCUME%7E1/ESTUDI%7E1/CONFIG%7E1/Temp/moz-screenshot.jpg" alt="" /></p>
<p><img src="/DOCUME%7E1/ESTUDI%7E1/CONFIG%7E1/Temp/moz-screenshot-8.jpg" alt="" /></p>
<p>He aquì tenemos un ejemplo de una lista enlazada simple</p>
<p>//LISTA DOBLE ENLAZADA</p>
<p>//DECLARACIÒN DE PROTOTIPOS</p>
<p>#include&lt;alloc.h&gt;<br />
#include&lt;stdlib.h&gt;<br />
#include&lt;conio.h&gt;<br />
#include&lt;iostream.h&gt;</p>
<p><img src="/DOCUME%7E1/ESTUDI%7E1/CONFIG%7E1/Temp/moz-screenshot-9.jpg" alt="" /></p>
<p>//Estructuras Doblemente enlazadas<br />
typedef struct nododoble<br />
{<br />
int dato;<br />
struct nododoble *sig;<br />
struct nododoble *ant;</p>
<p>}tipoNodo;</p>
<p>//PROTOTIPOS<br />
tipoNodo *nuevo_elemento();<br />
void creardoble();<br />
void presentar();<br />
void insertar();<br />
void insertarfinaldoble();<br />
void insertarordenadodoble();<br />
void insertariniciodoble();<br />
void modificar();<br />
void buscar();<br />
void ordenar();<br />
void ordenardoblesasc();<br />
void ordenardoblesdesc();<br />
void eliminar();<br />
void eliminar_cabeza();<br />
void cuadro(int x1,int y1,int x2,int y2,char c);</p>
<p>tipoNodo *cab;<br />
tipoNodo *cola;</p>
<p>tipoNodo *nuevo_elemento()<br />
{<br />
tipoNodo  *nodo1;<br />
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));<br />
if(!nodo1)<br />
cout&lt;&lt;&#8221;No se ha reservado memoria para el nuevo &#8220;;<br />
return nodo1;<br />
}</p>
<p>//MENU PRINCIPAL<br />
void  main()<br />
{<br />
clrscr();<br />
creardoble();<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,35,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ LISTAS ENLAZADAS DOBLES ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  INSERTAR \n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  MODIFICAR\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  BUSCAR\n&#8221;;<br />
gotoxy(12,17);cout&lt;&lt;&#8221; [4]:  ORDENAR\n&#8221;;<br />
gotoxy(12,19);cout&lt;&lt;&#8221; [5]:  ELIMINAR\n&#8221;;<br />
gotoxy(12,21);cout&lt;&lt;&#8221; [6]:  PRESENTAR\n&#8221;;<br />
gotoxy(12,24);cout&lt;&lt;&#8221; [7]:  SALIR DEL MENU\n&#8221;;<br />
gotoxy(12,27);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,27);cin&gt;&gt;opc;</p>
<p>switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertar();;getch();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
modificar();getch();break;<br />
case&#8217;3&#8242;:<br />
clrscr();<br />
buscar();getch();break;<br />
case&#8217;4&#8242;:<br />
clrscr();<br />
ordenar();getch();break;<br />
case&#8217;5&#8242;:<br />
clrscr();<br />
eliminar();getch();break;</p>
<p>case&#8217;6&#8242;:<br />
clrscr();<br />
presentar();getch();break;</p>
<p>}</p>
<p>}while(opc!=&#8217;7&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>//CREAR LA CABEZA<br />
void creardoble()<br />
{<br />
clrscr();<br />
int dat;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;Ingrese Elemento:  &#8220;;<br />
cin&gt;&gt;dat;<br />
cab=nuevo_elemento();<br />
cola=nuevo_elemento();<br />
cab-&gt;dato=dat;<br />
cab-&gt;sig=NULL;<br />
cab-&gt;ant=NULL;<br />
cola=cab;<br />
getch();<br />
}</p>
<p>void insertar()<br />
{<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,25,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ INSERTAR ELEMENMTOS A LA LISTA ENLAZADA ]&lt;-\n&#8221;;<br />
gotoxy(12,6); cout&lt;&lt;&#8221; [1]:  INSERTAR ORDENADO\n&#8221;;<br />
gotoxy(12,9);cout&lt;&lt;&#8221; [2]:  INSERTAR CABEZA\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [3]:  INSERTAR AL FINAL\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [4]:  REGRESAR\n&#8221;;<br />
gotoxy(12,17);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,17);cin&gt;&gt;opc;<br />
switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertarordenadodoble();getch();break;</p>
<p>case&#8217;2&#8242;:<br />
clrscr();</p>
<p>insertariniciodoble();getch();break;</p>
<p>case&#8217;3&#8242;:<br />
clrscr();<br />
insertarfinaldoble();getch();break;<br />
}</p>
<p>}<br />
while(opc!=&#8217;4&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>void insertarfinaldoble()<br />
{<br />
clrscr();<br />
nododoble *elem;<br />
elem=nuevo_elemento();<br />
clrscr();<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;\t\t&#8221;&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;elem-&gt;dato;<br />
cola-&gt;sig=elem;<br />
elem-&gt;sig=NULL;<br />
elem-&gt;ant=cola;<br />
cola=elem;<br />
getch();<br />
}</p>
<p>void insertarordenadodoble()<br />
{<br />
int dat;<br />
nododoble *aux;<br />
nododoble *ant;<br />
nododoble *post;<br />
aux=nuevo_elemento();<br />
ant=nuevo_elemento();<br />
post=nuevo_elemento();<br />
gotoxy(18,22);<br />
cout&lt;&lt;&#8221;Ingrese un elemento: &#8220;;<br />
cin&gt;&gt;dat;<br />
aux-&gt;dato=dat;<br />
if(aux-&gt;dato&gt;cab-&gt;dato)<br />
{</p>
<p>ant=cab;<br />
post=cab-&gt;sig;</p>
<p>while((aux-&gt;dato&gt;post-&gt;dato) &amp;&amp; (post-&gt;sig!=NULL))<br />
{<br />
ant=post;<br />
post=post-&gt;sig;<br />
}<br />
if (post-&gt;sig==NULL)<br />
{</p>
<p>if (aux-&gt;dato&lt;post-&gt;dato){<br />
aux-&gt;sig=post;<br />
post-&gt;ant=aux;<br />
ant-&gt;sig=aux;<br />
aux-&gt;ant=ant;<br />
}else{<br />
aux-&gt;sig=NULL;<br />
post-&gt;sig=aux;<br />
aux-&gt;ant=post;<br />
}<br />
}<br />
else<br />
{<br />
aux-&gt;sig=post;<br />
post-&gt;ant=aux;<br />
ant-&gt;sig=aux;<br />
aux-&gt;ant=ant;<br />
}<br />
}<br />
else{<br />
aux-&gt;dato=dat;<br />
aux-&gt;sig=cab;<br />
cab-&gt;ant=aux;<br />
aux-&gt;ant=NULL;<br />
cab=aux;<br />
}<br />
}<br />
void insertariniciodoble()<br />
{<br />
nododoble *Aux;<br />
int dat;<br />
Aux=nuevo_elemento();<br />
gotoxy(18,22);<br />
cout&lt;&lt;&#8221;Ingrese un numero:&#8221;;<br />
cin&gt;&gt;dat;<br />
Aux-&gt;dato=dat;<br />
Aux-&gt;ant=NULL;<br />
Aux-&gt;sig=cab;<br />
cab-&gt;ant=Aux;<br />
cab=Aux;<br />
}</p>
<p>void modificar()<br />
{<br />
clrscr();<br />
nododoble *modificar;<br />
nododoble *ele;<br />
modificar=nuevo_elemento();<br />
int db,encontrado=0;<br />
modificar=cab;<br />
gotoxy(10,20);<br />
cout&lt;&lt;&#8221;\t&#8221;&lt;&lt;&#8221;INGRESE EL VALOR A MODIFICAR :\t&#8221;;<br />
cin&gt;&gt; db;<br />
while(modificar!=NULL)<br />
{<br />
if(db==modificar-&gt;dato)<br />
{<br />
gotoxy(10,22);cout&lt;&lt;&#8221;Elemento existente en la lista&#8221;;<br />
encontrado=1;<br />
gotoxy(10,25);<br />
cout&lt;&lt;&#8221;\t\t&#8221;&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;ele-&gt;dato;<br />
modificar-&gt;dato=ele-&gt;dato;</p>
<p>}<br />
modificar=modificar-&gt;sig;</p>
<p>}<br />
if(encontrado==0)<br />
{<br />
gotoxy(10,22);cout&lt;&lt;&#8221;Elemento no existente en la lista&#8221;;<br />
}</p>
<p>getch();<br />
}<br />
void buscar()<br />
{<br />
clrscr();<br />
nododoble *buscar;<br />
buscar=nuevo_elemento();<br />
int db,encontrado=0;<br />
buscar=cab;<br />
gotoxy(18,15);<br />
cout&lt;&lt;&#8221;Ingrese el numero a buscar: &#8220;;<br />
cin&gt;&gt; db;<br />
while(buscar!=NULL)<br />
{<br />
if(db==buscar-&gt;dato)<br />
{<br />
gotoxy(18,18);cout&lt;&lt;&#8221;Elemento existente en la lista&#8221;;<br />
encontrado=1;<br />
}<br />
buscar=buscar-&gt;sig;<br />
}<br />
if(encontrado==0)<br />
{<br />
gotoxy(18,18);cout&lt;&lt;&#8221;Elemento no existente en la lista&#8221;;<br />
}<br />
getch();<br />
}</p>
<p>void ordenar()<br />
{<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,25,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ ORDENAR  LAS LISTAS ENLAZADAS ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  ORDENAR ASCENDENTE\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  ORDENAR DESCENDENTE\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  REGRESAR\n&#8221;;</p>
<p>gotoxy(12,17);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,17);cin&gt;&gt;opc;<br />
switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
ordenardoblesasc();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
ordenardoblesdesc();break;</p>
<p>}</p>
<p>}<br />
while(opc!=&#8217;3&#8242;);</p>
<p>getch();</p>
<p>}<br />
void ordenardoblesasc()<br />
{<br />
nododoble *aux;<br />
nododoble *temp;<br />
int vaux;<br />
aux=nuevo_elemento();<br />
temp=nuevo_elemento();<br />
aux=cab;<br />
while (aux!=NULL)<br />
{<br />
temp=aux;<br />
while(temp-&gt;sig!=NULL)<br />
{<br />
temp=temp-&gt;sig;<br />
if(aux-&gt;dato&gt;temp-&gt;dato)<br />
{<br />
vaux=aux-&gt;dato;<br />
aux-&gt;dato=temp-&gt;dato;<br />
temp-&gt;dato=vaux;<br />
}<br />
}<br />
aux=aux-&gt;sig;<br />
}<br />
}<br />
void ordenardoblesdesc()<br />
{<br />
nododoble *aux;<br />
nododoble *temp;<br />
int vaux;<br />
aux=nuevo_elemento();<br />
temp=nuevo_elemento();<br />
aux=cab;<br />
while (aux!=NULL)<br />
{<br />
temp=aux;<br />
while(temp-&gt;sig!=NULL)<br />
{<br />
temp=temp-&gt;sig;<br />
if(aux-&gt;dato&lt;temp-&gt;dato)<br />
{<br />
vaux=aux-&gt;dato;<br />
aux-&gt;dato=temp-&gt;dato;<br />
temp-&gt;dato=vaux;<br />
}<br />
}<br />
aux=aux-&gt;sig;<br />
}<br />
}</p>
<p>void presentar()<br />
{<br />
clrscr();</p>
<p>int c=8;<br />
nododoble  *recorre;<br />
recorre=nuevo_elemento();<br />
recorre=cab;<br />
gotoxy(18,7);<br />
cout&lt;&lt;&#8221;   ELEMENTOS INSERTADOS: \n&#8221;;<br />
while(recorre!=NULL)<br />
{<br />
c=c+1;<br />
gotoxy(30,c);cout&lt;&lt;recorre-&gt;dato&lt;&lt;&#8221;\n&#8221;;<br />
recorre=recorre-&gt;sig;<br />
}<br />
getch();<br />
}</p>
<p>void eliminar()<br />
{<br />
presentar();<br />
nododoble *eliminar;<br />
nododoble *asigna;<br />
gotoxy(10,25);cout&lt;&lt;&#8221;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n&#8221;;<br />
gotoxy(10,26);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,27);cout&lt;&lt;&#8221;ºINSERTAR NUMERO A ELIMINARº\n&#8221;;<br />
gotoxy(10,28);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,29);cout&lt;&lt;&#8221;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼\n&#8221;;<br />
gotoxy(10,31);cout&lt;&lt;&#8221;Ingrese el n—mero a eliminar\t&#8221;;<br />
cin&gt;&gt;eliminar-&gt;dato;<br />
if (eliminar-&gt;dato==cab-&gt;dato)<br />
{</p>
<p>eliminar_cabeza();<br />
}</p>
<p>else<br />
{<br />
nododoble *anterior=cab;<br />
nododoble * aux=cab-&gt;sig;</p>
<p>while((aux!=NULL)&amp;&amp;(aux-&gt;dato!=eliminar-&gt;dato))<br />
{<br />
anterior=aux;<br />
aux=aux-&gt;sig;<br />
}<br />
if(aux!=NULL)<br />
{<br />
asigna=aux-&gt;sig;<br />
anterior-&gt;sig=asigna;<br />
aux-&gt;ant=anterior;<br />
aux-&gt;ant=NULL;<br />
aux-&gt;sig=NULL;<br />
free(aux);<br />
}<br />
else<br />
{<br />
gotoxy(10,33);<br />
cout&lt;&lt;&#8221;NO SE ENCUENTRA&#8221;;<br />
}<br />
}</p>
<p>}</p>
<p>void eliminar_cabeza()<br />
{<br />
nododoble *aux;<br />
aux=cab;<br />
cab=cab-&gt;sig;<br />
aux-&gt;sig=NULL;<br />
aux-&gt;ant=NULL;<br />
free(aux);<br />
}</p>
<p>void cuadro(int x1,int y1, int x2, int y2, char simb)<br />
{<br />
for (int i1=y1;i1&lt;=y2;i1++)<br />
{<br />
gotoxy(i1,x1);cout&lt;&lt;simb;<br />
gotoxy(i1,x2);cout&lt;&lt;simb;<br />
}<br />
for (int i2=x1;i2&lt;=x2;i2++)<br />
{<br />
gotoxy(y1,i2);cout&lt;&lt;simb;<br />
gotoxy(y2,i2);cout&lt;&lt;simb;<br />
}<br />
}</p>
<h3><span class="mw-headline">Listas enlazadas circulares</span></h3>
<p>En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer un lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para visitar todos los nodos de una lista a partir de uno dado.</p>
<p><a class="image" title="Circularly-linked-list.svg" href="http://es.wikipedia.org/wiki/Imagen:Circularly-linked-list.svg"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Circularly-linked-list.svg/350px-Circularly-linked-list.svg.png" border="0" alt="Circularly-linked-list.svg" width="298" height="51" /></a></p>
<h4><span class="mw-headline">Listas enlazadas circulares simples</span></h4>
<p>Cada nodo tiene un enlace, similar al de las <strong>listas enlazadas simples</strong>, excepto que el siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo.</p>
<h4><span class="mw-headline">Lista Enlazada Doblemente Circular</span></h4>
<p>En una <strong>lista enlazada doblemente circular</strong>, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como una lista doblemente enlazada con falsos nodos.</p>
<p>Aquì un ejemplo de lista circular doblemente enlazadas en C++</p>
<p>//LISTA DOBLE CIRCULARES<br />
#include&lt;iostream.h&gt;<br />
#include&lt;conio.h&gt;<br />
#include&lt;stdio.h&gt;<br />
#include&lt;stdlib.h&gt;</p>
<p>//Estructuras Doblemente enlazadas<br />
typedef struct nododoble<br />
{<br />
int dato;<br />
struct nodoc *sig;<br />
struct nodoc *ant;</p>
<p>}tipoNodo;</p>
<p>//PROTOTIPOS<br />
tipoNodo *nuevo_elemento();<br />
void crearc();<br />
void presentar();<br />
void presentar_recorrido();<br />
void insertar();<br />
void insertarfinalc();<br />
void insertarordenadoc();<br />
void insertarinicioc();<br />
void modificar();<br />
void buscar();<br />
void ordenar();<br />
void ordenarc();<br />
void ordenarcdesc();<br />
void eliminar();<br />
void eliminar_cabeza();<br />
void cuadro(int x1,int y1,int x2,int y2,char c);</p>
<p>tipoNodo *cab;<br />
tipoNodo *cola;</p>
<p>tipoNodo *nuevo_elemento()<br />
{<br />
tipoNodo  *nodo1;<br />
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));<br />
if(!nodo1)<br />
cout&lt;&lt;&#8221;No se ha reservado memoria para el nuevo &#8220;;<br />
return nodo1;<br />
}</p>
<p>//MENU PRINCIPAL<br />
void  main()<br />
{<br />
clrscr();<br />
creardoble();<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,35,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ LISTAS ENLAZADAS CIRCULARES ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  INSERTAR \n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  MODIFICAR\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  BUSCAR\n&#8221;;<br />
gotoxy(12,18);cout&lt;&lt;&#8221; [4]:  ORDENAR\n&#8221;;<br />
gotoxy(12,21);cout&lt;&lt;&#8221; [5]:  ELIMINAR\n&#8221;;<br />
gotoxy(12,24);cout&lt;&lt;&#8221; [6]:  PRESENTAR\n&#8221;;<br />
gotoxy(12,27);cout&lt;&lt;&#8221; [7]:  PRESENTAR RECORRIDO\n&#8221;;<br />
gotoxy(12,30);cout&lt;&lt;&#8221; [8]:  SALIR DEL MENU\n&#8221;;<br />
gotoxy(12,33);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,33);cin&gt;&gt;opc;</p>
<p>switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertar();;getch();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
modificar();getch();break;<br />
case&#8217;3&#8242;:<br />
clrscr();<br />
buscar();getch();break;<br />
case&#8217;4&#8242;:<br />
clrscr();<br />
ordenar();getch();break;<br />
case&#8217;5&#8242;:<br />
clrscr();<br />
eliminar();getch();break;</p>
<p>case&#8217;6&#8242;:<br />
clrscr();<br />
presentar();getch();break;<br />
case&#8217;7&#8242;:<br />
clrscr();<br />
presentar_recorrido();getch();break;<br />
}</p>
<p>}while(opc!=&#8217;8&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>//CREAR LA CABEZA<br />
void crearc()<br />
{<br />
clrscr();<br />
int dat;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;Ingrese Elemento:  &#8220;;<br />
cin&gt;&gt;dat;<br />
cab=nuevo_elemento();<br />
cab-&gt;dato=dat;<br />
cola=cab;<br />
cola-&gt;sig=cab;<br />
cab-&gt;ant=cola;<br />
getch();<br />
}</p>
<p>void insertar()<br />
{<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,25,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ INSERTAR ELEMENMTOS A LA LISTA ENLAZADA ]&lt;-\n&#8221;;<br />
gotoxy(12,6); cout&lt;&lt;&#8221; [1]:  INSERTAR ORDENADO\n&#8221;;<br />
gotoxy(12,9);cout&lt;&lt;&#8221; [2]:  INSERTAR CABEZA\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [3]:  INSERTAR AL FINAL\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [4]:  REGRESAR\n&#8221;;<br />
gotoxy(12,17);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,17);cin&gt;&gt;opc;<br />
switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertarordenadoc();getch();break;</p>
<p>case&#8217;2&#8242;:<br />
clrscr();</p>
<p>insertarinicioc();getch();break;</p>
<p>case&#8217;3&#8242;:<br />
clrscr();<br />
insertarfinalc();getch();break;<br />
}</p>
<p>}<br />
while(opc!=&#8217;4&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>void insertarfinalc()<br />
{<br />
clrscr();<br />
nodoc *elem;<br />
elem=nuevo_elemento();<br />
clrscr();<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;\t\t&#8221;&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;elem-&gt;dato;<br />
cola-&gt;sig=elem;<br />
elem-&gt;ant=cola;<br />
elem-&gt;sig=cab;<br />
cab-&gt;ant=elem;<br />
cola=elem;<br />
getch();</p>
<p>}</p>
<p>void insertarordenadoc()<br />
{<br />
nodoc *ant;<br />
nodoc *Aux;<br />
nodoc *post;<br />
int dat;<br />
Aux=nuevo_elemento();<br />
ant=nuevo_elemento();<br />
post=nuevo_elemento();<br />
gotoxy(18,22);<br />
cout&lt;&lt;&#8221;Ingrese un elemento: &#8220;;<br />
cin&gt;&gt;dat;<br />
Aux-&gt;dato=dat;<br />
if(Aux-&gt;dato&gt;cab-&gt;dato)<br />
{<br />
ant=cab;<br />
post=cab-&gt;sig;<br />
while((Aux-&gt;dato&gt;post-&gt;dato)&amp;&amp;(post-&gt;sig!=cab))<br />
{<br />
ant=post;<br />
post=post-&gt;sig;<br />
}<br />
if(post-&gt;sig==cab)<br />
{<br />
if (Aux-&gt;dato&lt;post-&gt;dato)<br />
{<br />
Aux-&gt;sig=post;<br />
post-&gt;ant=Aux;<br />
ant-&gt;sig=Aux;<br />
Aux-&gt;ant=ant;<br />
}<br />
else<br />
{<br />
Aux-&gt;sig=cab;<br />
post-&gt;sig=Aux;<br />
Aux-&gt;ant=post;<br />
cab-&gt;ant=Aux;<br />
cola=Aux;<br />
}<br />
}<br />
else<br />
{<br />
Aux-&gt;sig=post;<br />
post-&gt;ant=Aux;<br />
ant-&gt;sig=Aux;<br />
Aux-&gt;ant=ant;<br />
}<br />
}<br />
else<br />
{<br />
Aux-&gt;dato=dat;<br />
Aux-&gt;sig=cab;<br />
cab-&gt;ant=Aux;<br />
Aux-&gt;ant=cola;<br />
cab=Aux;<br />
cola-&gt;sig=cab;<br />
}<br />
}<br />
void insertarinicioc()<br />
{<br />
nodoc *Aux;<br />
int dat;<br />
Aux=nuevo_elemento();<br />
gotoxy(18,22);<br />
cout&lt;&lt;&#8221;Ingrese un numero:&#8221;;<br />
cin&gt;&gt;dat;<br />
Aux-&gt;dato=dat;<br />
Aux-&gt;sig=cab;<br />
cab-&gt;ant=Aux;<br />
cola-&gt;sig=Aux;<br />
Aux-&gt;ant=cola;<br />
cab=Aux;<br />
getch();<br />
}</p>
<p>void modificar()<br />
{<br />
clrscr();<br />
nodoc *modificar;<br />
nodoc *ele;<br />
modificar=nuevo_elemento();<br />
int db,encontrado=0;<br />
modificar=cab;<br />
gotoxy(10,20);<br />
cout&lt;&lt;&#8221;\t&#8221;&lt;&lt;&#8221;INGRESE EL VALOR A MODIFICAR :\t&#8221;;<br />
cin&gt;&gt; db;<br />
for(int c=0;c&lt;=1;c++)<br />
{</p>
<p>while(db!=modificar-&gt;dato)<br />
{<br />
modificar=modificar-&gt;sig;</p>
<p>}<br />
gotoxy(10,22);<br />
cout&lt;&lt;&#8221;Elemento existente en la lista&#8221;;<br />
encontrado=1;<br />
gotoxy(10,25);<br />
cout&lt;&lt;&#8221;\t\t&#8221;&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;ele-&gt;dato;<br />
modificar-&gt;dato=ele-&gt;dato;</p>
<p>c++;<br />
}<br />
if(encontrado==0)<br />
{<br />
gotoxy(10,22);<br />
cout&lt;&lt;&#8221;Elemento no existente en la lista&#8221;;<br />
}</p>
<p>getch();<br />
}<br />
void buscar()<br />
{<br />
clrscr();<br />
cuadro(15,5,50,25,&#8217;');<br />
nodoc *buscar;<br />
buscar=nuevo_elemento();<br />
int db,encontrado=0;<br />
buscar=cab;<br />
gotoxy(18,15);<br />
cout&lt;&lt;&#8221;Ingrese el numero a buscar: &#8220;;<br />
cin&gt;&gt; db;</p>
<p>for(int c=0;c&lt;=1;c++)<br />
{<br />
while(buscar-&gt;dato!=db)<br />
{</p>
<p>buscar=buscar-&gt;sig;<br />
}</p>
<p>gotoxy(18,18);<br />
cout&lt;&lt;&#8221;Elemento existente en la lista&#8221;;<br />
encontrado=1;</p>
<p>c++;<br />
}<br />
if(encontrado==0)<br />
{<br />
gotoxy(18,18);cout&lt;&lt;&#8221;Elemento no existente en la lista&#8221;;<br />
}<br />
getch();<br />
}</p>
<p>void ordenar()<br />
{<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,25,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ ORDENAR  LAS LISTAS ENLAZADAS ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  ORDENAR ASCENDENTE\n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  ORDENAR DESCENDENTE\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  REGRESAR\n&#8221;;</p>
<p>gotoxy(12,17);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,17);cin&gt;&gt;opc;<br />
switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
ordenarc();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
ordenarcdesc();break;</p>
<p>}</p>
<p>}<br />
while(opc!=&#8217;3&#8242;);</p>
<p>getch();</p>
<p>}<br />
void ordenarc()<br />
{<br />
nodoc *aux;<br />
nodoc *temp;<br />
int vaux;<br />
aux=nuevo_elemento();<br />
temp=nuevo_elemento();<br />
aux=cab;<br />
while (aux-&gt;sig!=cab)<br />
{<br />
temp=aux;<br />
while(temp-&gt;sig!=cab)<br />
{<br />
temp=temp-&gt;sig;<br />
if(aux-&gt;dato&gt;temp-&gt;dato)<br />
{<br />
vaux=aux-&gt;dato;<br />
aux-&gt;dato=temp-&gt;dato;<br />
temp-&gt;dato=vaux;<br />
}<br />
}<br />
aux=aux-&gt;sig;<br />
}<br />
}<br />
void ordenarcdesc()<br />
{<br />
nodoc *aux;<br />
nodoc *temp;<br />
int vaux;<br />
aux=nuevo_elemento();<br />
temp=nuevo_elemento();<br />
aux=cab;<br />
while (aux-&gt;sig!=cab)<br />
{<br />
temp=aux;<br />
while(temp-&gt;sig!=cab)<br />
{<br />
temp=temp-&gt;sig;<br />
if(aux-&gt;dato&lt;temp-&gt;dato)<br />
{<br />
vaux=aux-&gt;dato;<br />
aux-&gt;dato=temp-&gt;dato;<br />
temp-&gt;dato=vaux;<br />
}<br />
}<br />
aux=aux-&gt;sig;<br />
}<br />
}</p>
<p>void presentar()<br />
{<br />
clrscr();<br />
nodoc * recorre;<br />
recorre=nuevo_elemento();<br />
recorre=cab;<br />
cout&lt;&lt;&#8221;Elementos insertados:\n\n&#8221;;<br />
for(int c=0;c&lt;=1;c++)<br />
{<br />
cout&lt;&lt;recorre-&gt;dato&lt;&lt;&#8221;\t&#8221;;<br />
recorre=recorre-&gt;sig;<br />
while(recorre!=cab)<br />
{<br />
cout&lt;&lt;recorre-&gt;dato&lt;&lt;&#8221;\t&#8221;;<br />
recorre=recorre-&gt;sig;<br />
}<br />
c++;<br />
}</p>
<p>getch();<br />
}<br />
void presentar_recorrido()<br />
{<br />
clrscr();<br />
nodoc * recorre;<br />
recorre=nuevo_elemento();<br />
recorre=cab;<br />
cout&lt;&lt;&#8221;Elementos insertados:\n\n&#8221;;<br />
for(int c=0;c&lt;=1;c++)<br />
{<br />
cout&lt;&lt;recorre-&gt;dato&lt;&lt;&#8221;\t&#8221;;<br />
recorre=recorre-&gt;sig;<br />
while(recorre!=cab)<br />
{<br />
cout&lt;&lt;recorre-&gt;dato&lt;&lt;&#8221;\t&#8221;;<br />
recorre=recorre-&gt;sig;<br />
}<br />
cout&lt;&lt;&#8221;\n&#8221;;<br />
}</p>
<p>getch();</p>
<p>}</p>
<p>void eliminar()<br />
{<br />
presentar();<br />
nodoc *eliminar;<br />
nodoc *asigna;<br />
gotoxy(10,25);cout&lt;&lt;&#8221;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n&#8221;;<br />
gotoxy(10,26);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,27);cout&lt;&lt;&#8221;ºINSERTAR NUMERO A ELIMINARº\n&#8221;;<br />
gotoxy(10,28);cout&lt;&lt;&#8221;º                          º\n&#8221;;<br />
gotoxy(10,29);cout&lt;&lt;&#8221;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼\n&#8221;;<br />
gotoxy(10,31);cout&lt;&lt;&#8221;Ingrese el n—mero a eliminar\t&#8221;;<br />
cin&gt;&gt;eliminar-&gt;dato;<br />
if (eliminar-&gt;dato==cab-&gt;dato)<br />
{</p>
<p>eliminar_cabeza();<br />
}</p>
<p>else<br />
{<br />
nodoc *anterior=cab;<br />
nodoc * aux=cab-&gt;sig;</p>
<p>while((aux!=NULL)&amp;&amp;(aux-&gt;dato!=eliminar-&gt;dato))<br />
{<br />
anterior=aux;<br />
aux=aux-&gt;sig;<br />
}<br />
if(aux!=NULL)<br />
{<br />
asigna=aux-&gt;sig;<br />
anterior-&gt;sig=asigna;<br />
aux-&gt;ant=anterior;<br />
aux-&gt;ant=NULL;<br />
aux-&gt;sig=NULL;<br />
free(aux);<br />
}<br />
else<br />
{<br />
gotoxy(10,33);<br />
cout&lt;&lt;&#8221;NO SE ENCUENTRA&#8221;;<br />
}<br />
}</p>
<p>}</p>
<p>void eliminar_cabeza()<br />
{<br />
/*    nododoble *aux;<br />
aux=cab;<br />
cab=cab-&gt;sig;<br />
//    cab-&gt;ant=cola;<br />
aux-&gt;sig=NULL;<br />
cab-&gt;ant=cola;<br />
aux-&gt;ant=NULL;<br />
free(aux); */<br />
nodoc *aux;<br />
aux=cab;<br />
cab=cab-&gt;sig;<br />
//    aux-&gt;sig=NULL;<br />
aux-&gt;ant=NULL;<br />
free(aux);</p>
<p>}</p>
<p>void cuadro(int x1,int y1, int x2, int y2, char simb)<br />
{<br />
for (int i1=y1;i1&lt;=y2;i1++)<br />
{<br />
gotoxy(i1,x1);cout&lt;&lt;simb;<br />
gotoxy(i1,x2);cout&lt;&lt;simb;<br />
}<br />
for (int i2=x1;i2&lt;=x2;i2++)<br />
{<br />
gotoxy(y1,i2);cout&lt;&lt;simb;<br />
gotoxy(y2,i2);cout&lt;&lt;simb;<br />
}<br />
}</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmmolina.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmmolina.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmmolina.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmmolina.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmmolina.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmmolina.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmmolina.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmmolina.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmmolina.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmmolina.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=42&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmmolina.wordpress.com/2008/07/13/listas-enlazadas-defenicion-y-ejemplos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d2997c37c603e1ba23f823c5cc749fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dmmolina</media:title>
		</media:content>

		<media:content url="http://wiki.gnome.cl/images/e/e0/Lista.png" medium="image">
			<media:title type="html">Lista.png</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Singly-linked-list.svg/408px-Singly-linked-list.svg.png" medium="image">
			<media:title type="html">Singly-linked-list.svg</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Doubly-linked-list.svg/610px-Doubly-linked-list.svg.png" medium="image">
			<media:title type="html">Doubly-linked-list.svg</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Circularly-linked-list.svg/350px-Circularly-linked-list.svg.png" medium="image">
			<media:title type="html">Circularly-linked-list.svg</media:title>
		</media:content>
	</item>
		<item>
		<title>Arboles en estructura</title>
		<link>http://dmmolina.wordpress.com/2008/07/13/arboles-en-estructura/</link>
		<comments>http://dmmolina.wordpress.com/2008/07/13/arboles-en-estructura/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 20:47:31 +0000</pubDate>
		<dc:creator>dmmolina</dc:creator>
				<category><![CDATA[Estructura de datos]]></category>
		<category><![CDATA[fundamentos informaticos]]></category>
		<category><![CDATA[DianaMolina]]></category>
		<category><![CDATA[estructuras de datos]]></category>
		<category><![CDATA[loja]]></category>
		<category><![CDATA[UTPL]]></category>

		<guid isPermaLink="false">http://dmmolina.wordpress.com/?p=40</guid>
		<description><![CDATA[Un àrbol en estructura de datos esuna emulaciòn en forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Se dice que un nodo a es padre de un nodo b si existe [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=40&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Un àrbol en estructura de datos es<span id="more-40"></span>una emulaciòn en forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Se dice que un nodo <span class="texhtml"><em>a</em></span> es padre de un nodo <span class="texhtml"><em>b</em></span> si existe un enlace desde <span class="texhtml"><em>a</em></span> hasta <span class="texhtml"><em>b</em></span> (en ese caso, también decimos que <span class="texhtml"><em>b</em></span> es hijo de <span class="texhtml"><em>a</em></span>). Sólo puede haber un único nodo sin padres, que llamaremos raìz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les conoce comorama.</p>
<p><strong>Arboles binarios</strong></p>
<div class="thumb tright">
<div class="thumbinner" style="width:182px;"><a class="image" title="Ejemplo de árbol (binario)." href="http://es.wikipedia.org/wiki/Imagen:Binary_tree_%28oriented_digraph%29.png"><img class="thumbimage" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Binary_tree_%28oriented_digraph%29.png/180px-Binary_tree_%28oriented_digraph%29.png" border="0" alt="Ejemplo de árbol (binario)." width="180" height="159" /></a></div>
</div>
<ul>
<li>Un <strong>árbol binario</strong> es un árbol <strong>con raíz</strong> en el que cada nodo tiene como máximo dos hijos.</li>
<li>Un <strong>árbol binario lleno</strong> es un árbol en el que cada nodo tiene cero o dos hijos.</li>
<li>Un <strong>árbol binario perfecto</strong> es un árbol binario lleno en el que todas las <strong>hojas</strong> (vértices con cero hijos) están a la misma profundidad (distancia desde la <strong>raíz</strong>, también llamada <strong>altura</strong>)</li>
<li>A veces un árbol binario perfecto es denominado <strong>árbol binario completo</strong>. Otros definen un árbol <strong>binario completo</strong> como un árbol binario lleno en el que todas las hojas están a profundidad.</li>
</ul>
<p>un <strong>árbol binario</strong> es un árbol en el que ningun nodo puede tener mas de dos subarboles. es un árbol binario, cada nodo puede tener, cero, uno o dos hijos(subarboles). se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.</p>
<p>Aquì un ejemplo de àbol binario en C++</p>
<p>//LISTA DOBLE CIRCULARES<br />
#include&lt;iostream.h&gt;<br />
#include&lt;conio.h&gt;<br />
#include&lt;stdio.h&gt;<br />
#include&lt;stdlib.h&gt;</p>
<p>//Estructuras de arboles binarios<br />
typedef struct arbolesBinarios<br />
{<br />
int dato;<br />
struct  arbolesBinarios *izq;<br />
struct arbolesBinarios *der;</p>
<p>}tipoNodo;</p>
<p>//PROTOTIPOS<br />
tipoNodo *nuevo_elemento();<br />
void crearraiz();<br />
void presentar();<br />
void insertar();<br />
void insertarElem(tipoNodo *auxRaiz, tipoNodo *elem);<br />
void inrden(tipoNodo *nodo);<br />
void preorden(tipoNodo *nodo);<br />
void postOrden(tipoNodo *nodo);<br />
void inrdeninver(tipoNodo *nodo);<br />
void preordeninver(tipoNodo *nodo);<br />
void postOrdeninver(tipoNodo *nodo);<br />
void todos();<br />
void buscar(int num, tipoNodo *nodo);</p>
<p>void cuadro(int x1,int y1,int x2,int y2,char c);</p>
<p>tipoNodo *cabraiz;<br />
//tipoNodo *cola;</p>
<p>tipoNodo *nuevo_elemento()<br />
{<br />
tipoNodo  *nodo1;<br />
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));<br />
if(!nodo1)<br />
cout&lt;&lt;&#8221;No se ha reservado memoria para el nuevo &#8220;;<br />
return nodo1;<br />
}</p>
<p>//MENU PRINCIPAL<br />
void  main()<br />
{<br />
clrscr();<br />
crearraiz();<br />
int num;<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,35,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ LISTAS ENLAZADAS CIRCULARES ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  INSERTAR \n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  MODIFICAR\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  BUSCAR\n&#8221;;<br />
gotoxy(12,18);cout&lt;&lt;&#8221; [4]:  ORDENAR\n&#8221;;<br />
gotoxy(12,21);cout&lt;&lt;&#8221; [5]:  ELIMINAR\n&#8221;;<br />
gotoxy(12,24);cout&lt;&lt;&#8221; [6]:  PRESENTAR\n&#8221;;<br />
gotoxy(12,27);cout&lt;&lt;&#8221; [7]:  PRESENTAR RECORRIDO\n&#8221;;<br />
gotoxy(12,30);cout&lt;&lt;&#8221; [8]:  SALIR DEL MENU\n&#8221;;<br />
gotoxy(12,33);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,33);cin&gt;&gt;opc;</p>
<p>switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
insertar();getch();break;<br />
/*  case&#8217;2&#8242;:<br />
clrscr();<br />
modificar();getch();break;*/<br />
case&#8217;3&#8242;:<br />
clrscr();<br />
cout&lt;&lt;&#8221;INGRESE EL NUMERO A BUSCAR :&#8221;;<br />
cin&gt;&gt;num;<br />
buscar( num, cabraiz);getch();break;<br />
/*   case&#8217;4&#8242;:<br />
clrscr();<br />
ordenar();getch();break;<br />
case&#8217;5&#8242;:<br />
clrscr();<br />
eliminar();getch();break;*/</p>
<p>case&#8217;6&#8242;:<br />
clrscr();<br />
presentar();getch();break;<br />
/* case&#8217;7&#8242;:<br />
clrscr();<br />
presentar_recorrido();getch();break; */<br />
}</p>
<p>}while(opc!=&#8217;8&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>//CREAR LA RAIZ<br />
void crearraiz()<br />
{<br />
clrscr();<br />
int dat;<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;Ingrese Elemento:  &#8220;;<br />
cin&gt;&gt;dat;<br />
cabraiz=nuevo_elemento();<br />
cabraiz-&gt;dato=dat;<br />
cabraiz-&gt;der=NULL;<br />
cabraiz-&gt;izq=NULL;<br />
getch();<br />
}</p>
<p>void insertar()<br />
{<br />
clrscr();<br />
tipoNodo *elem;<br />
//    tipoNodo *auxraiz;<br />
elem=nuevo_elemento();<br />
clrscr();<br />
gotoxy(20,20);<br />
cout&lt;&lt;&#8221;\t\t&#8221;&lt;&lt;&#8221;INGRESE VALOR  :\t&#8221;;<br />
cin&gt;&gt;elem-&gt;dato;<br />
elem-&gt;der=NULL;<br />
elem-&gt;izq=NULL;<br />
insertarElem(cabraiz,elem);<br />
}</p>
<p>void insertarElem(tipoNodo *auxRaiz, tipoNodo *elem)<br />
{</p>
<p>if(elem-&gt;dato&gt;auxRaiz-&gt;dato)<br />
{</p>
<p>if( auxRaiz-&gt;der==NULL)<br />
{<br />
auxRaiz-&gt;der=elem;</p>
<p>}<br />
else<br />
{<br />
insertarElem( auxRaiz-&gt;der,  elem);<br />
}<br />
}<br />
else<br />
{<br />
if( auxRaiz-&gt;izq==NULL)<br />
{<br />
auxRaiz-&gt;izq=elem;</p>
<p>}<br />
else<br />
{<br />
insertarElem( auxRaiz-&gt;izq,  elem);<br />
}</p>
<p>}</p>
<p>getch();</p>
<p>}</p>
<p>void buscar(int num, tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
if(num==nodo-&gt;dato)<br />
{</p>
<p>cout&lt;&lt;&#8221;OK&#8221;;<br />
}<br />
else<br />
{</p>
<p>if(num&gt;nodo-&gt;dato)<br />
{<br />
buscar(num, nodo-&gt;der);<br />
}<br />
else<br />
{<br />
buscar(num, nodo-&gt;izq);<br />
}<br />
}<br />
}<br />
else<br />
{</p>
<p>cout&lt;&lt;&#8221;NO&#8221; ;<br />
}</p>
<p>getch();<br />
}</p>
<p>void presentar()<br />
{<br />
clrscr();<br />
clrscr();<br />
char opc=&#8217; &#8216;;</p>
<p>do<br />
{</p>
<p>clrscr();<br />
cuadro(1,10,35,56,&#8217;&#8217;);<br />
gotoxy(13,3);cout&lt;&lt;&#8221;-&gt;[ PRESENTAR ]&lt;-\n&#8221;;<br />
gotoxy(12,6);cout&lt;&lt;&#8221;    MENU PRINCIPAL\n&#8221;;<br />
gotoxy(12,9); cout&lt;&lt;&#8221; [1]:  PRESENTAR EN ORDEN \n&#8221;;<br />
gotoxy(12,12);cout&lt;&lt;&#8221; [2]:  PRESENTAR EN PREORDEN\n&#8221;;<br />
gotoxy(12,15);cout&lt;&lt;&#8221; [3]:  PRESENTAR EN POST ORDEN\n&#8221;;<br />
gotoxy(12,18);cout&lt;&lt;&#8221; [4]:  PRESENTAR EN ORDEN INVERSO \n&#8221;;<br />
gotoxy(12,21);cout&lt;&lt;&#8221; [5]:  PRESENTAR EN PREORDEN  INVERSO \n&#8221;;<br />
gotoxy(12,24);cout&lt;&lt;&#8221; [6]:  PRESENTAR EN POST ORDEN  INVERSO \n&#8221;;<br />
gotoxy(12,27);cout&lt;&lt;&#8221; [7]:  PRESENTAR TODOS\n&#8221;;<br />
gotoxy(12,30);cout&lt;&lt;&#8221; [8]:  REGRESAR\n&#8221;;</p>
<p>gotoxy(12,33);cout&lt;&lt;&#8221; Elegir una Opci¢n [ ]&#8220;;<br />
gotoxy(32,33);cin&gt;&gt;opc;</p>
<p>switch(opc)<br />
{<br />
case&#8217;1&#8242;:<br />
clrscr();<br />
inrden(cabraiz);getch();break;<br />
case&#8217;2&#8242;:<br />
clrscr();<br />
preorden(cabraiz);getch();break;<br />
case&#8217;3&#8242;:<br />
clrscr();<br />
postOrden(cabraiz);getch();break;</p>
<p>case&#8217;4&#8242;:<br />
clrscr();<br />
inrdeninver(cabraiz);getch();break;</p>
<p>case&#8217;5&#8242;:<br />
clrscr();<br />
preordeninver(cabraiz);getch();break;</p>
<p>case&#8217;6&#8242;:<br />
clrscr();<br />
postOrdeninver(cabraiz);getch();break;</p>
<p>case&#8217;7&#8242;:<br />
clrscr();<br />
todos();getch();break;</p>
<p>}<br />
}while(opc!=&#8217;8&#8242;);</p>
<p>getch();</p>
<p>}</p>
<p>void inrden(tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
inrden(nodo-&gt;izq);<br />
cout&lt;&lt;nodo-&gt;dato;<br />
cout&lt;&lt;&#8221;\t&#8221;;<br />
inrden(nodo-&gt;der);<br />
}<br />
getch();<br />
}</p>
<p>void inrdeninver(tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
inrdeninver(nodo-&gt;der);<br />
cout&lt;&lt;nodo-&gt;dato;<br />
cout&lt;&lt;&#8221;\t&#8221;;<br />
inrdeninver(nodo-&gt;izq);<br />
}<br />
getch();<br />
}<br />
void preorden(tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
cout&lt;&lt;nodo-&gt;dato;<br />
cout&lt;&lt;&#8221;\t&#8221;;<br />
preorden(nodo-&gt;izq);<br />
preorden(nodo-&gt;der);<br />
}<br />
getch();<br />
}<br />
void preordeninver(tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
preordeninver(nodo-&gt;der);<br />
preordeninver(nodo-&gt;izq);<br />
cout&lt;&lt;nodo-&gt;dato;<br />
cout&lt;&lt;&#8221;\t&#8221;;</p>
<p>}<br />
getch();<br />
}<br />
void postOrden(tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
postOrden(nodo-&gt;izq);<br />
postOrden(nodo-&gt;der);<br />
cout&lt;&lt;nodo-&gt;dato;<br />
cout&lt;&lt;&#8221;\t&#8221;;</p>
<p>}<br />
getch();<br />
}</p>
<p>void postOrdeninver(tipoNodo *nodo)<br />
{<br />
if(nodo!=NULL)<br />
{<br />
cout&lt;&lt;nodo-&gt;dato;<br />
cout&lt;&lt;&#8221;\t&#8221;;<br />
postOrdeninver(nodo-&gt;der);<br />
postOrdeninver(nodo-&gt;izq);</p>
<p>}<br />
getch();<br />
}<br />
void todos()<br />
{<br />
cout&lt;&lt;&#8221;\t\t** # INORDENADOS**&#8221;;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
inrden(cabraiz);<br />
cout&lt;&lt;&#8221;\n\n\n&#8221;;<br />
cout&lt;&lt;&#8221;\t\t ** # PREORDENADOS**&#8221;;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
preorden(cabraiz);<br />
cout&lt;&lt;&#8221;\n\n\n&#8221;;<br />
cout&lt;&lt;&#8221;\t\t ** # POSTORDENADOS**&#8221;;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
postOrden(cabraiz);<br />
cout&lt;&lt;&#8221;\n\n\n&#8221;;<br />
cout&lt;&lt;&#8221;\t\t ** # INORDENADOSIN**&#8221;;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
inrdeninver(cabraiz);<br />
cout&lt;&lt;&#8221;\n\n\n&#8221;;<br />
cout&lt;&lt;&#8221;\t\t ** # PREORDENADOSIN**&#8221;;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
preordeninver(cabraiz);<br />
cout&lt;&lt;&#8221;\n\n\n&#8221;;<br />
cout&lt;&lt;&#8221;\t\t ** # POSTORDENADOSIN **&#8221;;<br />
cout&lt;&lt;&#8221;\n\n&#8221;;<br />
postOrdeninver(cabraiz);<br />
}</p>
<p>void cuadro(int x1,int y1, int x2, int y2, char simb)<br />
{<br />
for (int i1=y1;i1&lt;=y2;i1++)<br />
{<br />
gotoxy(i1,x1);cout&lt;&lt;simb;<br />
gotoxy(i1,x2);cout&lt;&lt;simb;<br />
}<br />
for (int i2=x1;i2&lt;=x2;i2++)<br />
{<br />
gotoxy(y1,i2);cout&lt;&lt;simb;<br />
gotoxy(y2,i2);cout&lt;&lt;simb;<br />
}<br />
}</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmmolina.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmmolina.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmmolina.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmmolina.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmmolina.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmmolina.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmmolina.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmmolina.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmmolina.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmmolina.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=40&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmmolina.wordpress.com/2008/07/13/arboles-en-estructura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d2997c37c603e1ba23f823c5cc749fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dmmolina</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Binary_tree_%28oriented_digraph%29.png/180px-Binary_tree_%28oriented_digraph%29.png" medium="image">
			<media:title type="html">Ejemplo de árbol (binario).</media:title>
		</media:content>
	</item>
		<item>
		<title>Red de área local o LAN</title>
		<link>http://dmmolina.wordpress.com/2008/07/07/red-de-area-local-o-lan/</link>
		<comments>http://dmmolina.wordpress.com/2008/07/07/red-de-area-local-o-lan/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 16:02:21 +0000</pubDate>
		<dc:creator>dmmolina</dc:creator>
				<category><![CDATA[fundamentos informaticos]]></category>
		<category><![CDATA[DianaMolina]]></category>
		<category><![CDATA[Red_area_local_LAN]]></category>
		<category><![CDATA[UTPL]]></category>

		<guid isPermaLink="false">http://dmmolina.wordpress.com/?p=33</guid>
		<description><![CDATA[Es el conjunto de ordenadores o computadoras que pueden compartir datos, aplicaciones y recursos (por ejemplo impresoras). Las computadoras de una red de área local (LAN) están separadas por distancias de hasta unos pocos kilómetros, y se suelen usar en oficinas o campus universitarios. Una LAN permite la transferencia rápida y eficaz de información en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=33&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong></strong><span style="font-size:14pt;line-height:115%;">Es el conjunto de ordenadores o computadoras que</span><span id="more-33"></span></p>
<p><span style="font-size:14pt;line-height:115%;">pueden compartir datos, aplicaciones y recursos (por ejemplo impresoras). </span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:14pt;">Las computadoras de una red de área local (LAN) están separadas por distancias de hasta unos pocos kilómetros, y se suelen usar en oficinas o campus universitarios. Una LAN permite la transferencia rápida y eficaz de información en el seno de un grupo de usuarios y reduce los costes de explotación. Otros recursos informáticos conectados son las redes de área amplia WAN. Las WAN son similares a las LAN, pero conectan entre sí ordenadores separados por distancias mayores, situados en distintos lugares de un país o en diferentes países; emplean equipo físico especializado y costoso y arriendan los servicios de comunicaciones. Las mismas proporcionan conexiones informáticas continuas para la transferencia de datos especializados como transmisiones telefónicas, pero no resultan adecuadas para emitir y recibir los picos de datos de corta duración empleados por la mayoría de las aplicaciones informáticas. Mención aparte merece Internet, una red de carácter planetario que permite a un ordenador particular conectarse directamente a cualquier otro ordenador que también esté conectado a esta red.</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmmolina.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmmolina.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmmolina.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmmolina.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmmolina.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmmolina.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmmolina.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmmolina.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmmolina.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmmolina.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=33&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmmolina.wordpress.com/2008/07/07/red-de-area-local-o-lan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d2997c37c603e1ba23f823c5cc749fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dmmolina</media:title>
		</media:content>
	</item>
		<item>
		<title>RESOLUCION DE LA SERIE FIBONACI</title>
		<link>http://dmmolina.wordpress.com/2008/07/07/resolucion-de-la-serie-fibonaci/</link>
		<comments>http://dmmolina.wordpress.com/2008/07/07/resolucion-de-la-serie-fibonaci/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 15:57:09 +0000</pubDate>
		<dc:creator>dmmolina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dmmolina.wordpress.com/?p=32</guid>
		<description><![CDATA[SOLUCIÒN DE LA SERIE FIBONACI PRIMERA SOLUCION #include&#60;iostream.h&#62; #include&#60;conio.h&#62; //Declaracion de prototipos void fun1(int n, int f,int aux); //FUNCION PRINCIPAL void main() { clrscr(); fun1(5,0,1); getch(); } //Aplicando recursividad void fun1(int n, int f,int aux) { cout&#60;&#60;f&#60;&#60;”\n”; if(n&#62;1) } Segunda solución //DECLARACION DE LIBRERIAS #include&#60;iostream.h&#62; #include&#60;conio.h&#62; //Declaracion de prototipos void fun1(int n); //VARIABLES GLOBALES int [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=32&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">SOLUCIÒN DE LA SERIE FIBONACI<a title="Ver todas las entradas en Estructura de datos" href="http://es.wordpress.com/tag/estructura-de-datos/"></a></span></p>
<p class="MsoNormal" style="line-height:normal;"><span id="more-32"></span></p>
<p class="MsoNormal" style="line-height:normal;">
<p class="MsoNormal" style="line-height:normal;"><strong><span style="text-decoration:underline;"><span style="font-size:12pt;">PRIMERA SOLUCION</span></span></strong></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">#include&lt;iostream.h&gt;<br />
#include&lt;conio.h&gt;</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">//Declaracion de prototipos<br />
void fun1(int n, int f,int aux);</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">//FUNCION PRINCIPAL<br />
void  main()<br />
{<br />
clrscr();</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">fun1(5,0,1);<br />
getch();<br />
}</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">//Aplicando recursividad<br />
void fun1(int n, int f,int aux)<br />
{<br />
cout&lt;&lt;f&lt;&lt;”\n”;<br />
if(n&gt;1)<br />
}</span></p>
<p class="MsoNormal" style="line-height:normal;"><strong><span style="text-decoration:underline;"><span style="font-size:12pt;">Segunda solución</span></span></strong><span style="font-size:12pt;"><br />
//DECLARACION DE LIBRERIAS<br />
#include&lt;iostream.h&gt;<br />
#include&lt;conio.h&gt;</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">//Declaracion de prototipos<br />
void  fun1(int n);</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">//VARIABLES GLOBALES<br />
int f=0,b=1,c=1,fi=5,co=20;</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">//FUNCION PRINCIPAL<br />
void  main()<br />
{<br />
clrscr();<br />
int a;<br />
cout&lt;&lt;”   &gt; &gt;&gt;&gt;*INGRESE LA CANTIDAD DE  NUMEROS …. \n”;<br />
cout&lt;&lt;”   &gt;&gt;&gt;&gt;* DE LA SERIE FIBONACI QUE DESEE  …. \t”;<br />
cin&gt;&gt;a;<br />
cout&lt;&lt;”\n\n\n”;<br />
fun1(a);<br />
getch();<br />
}</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">//Aplicando recursividad</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">void fun1(int n)<br />
{<br />
gotoxy(co,fi);<br />
cout&lt;&lt;f&lt;&lt;”\n”;<br />
fi=fi+3;<br />
b=c;<br />
c=f;<br />
f=b+c;<br />
if(n&gt;1)<br />
{<br />
n–;<br />
fun1(n);<br />
}</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">}</span></p>
<p class="MsoNormal" style="line-height:normal;"><strong><span style="text-decoration:underline;"><span style="font-size:12pt;">Tercera solución</span></span></strong></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">#include&lt;iostream.h&gt;<br />
#include&lt;conio.h&gt;<br />
#include&lt;dos.h&gt;</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">//Declaracion de prototipos<br />
void fun1(int n,int b, int c, int f);</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">//VARIABLES GLOBALES<br />
//int fi=5,co=20;</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">//FUNCION PRINCIPAL<br />
void  main()<br />
{<br />
clrscr();</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">fun1(5,1,1,0);<br />
getch();<br />
}</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;" lang="EN-US">//Aplicando recursividad<br />
void fun1(int n,int b, int c, int f)<br />
{<br />
cout&lt;&lt;f&lt;&lt;”\n”;<br />
if(n&gt;1)<br />
{<br />
fun1((n-1),c,f,(f+c));<br />
}</span></p>
<p class="MsoNormal" style="line-height:normal;"><span style="font-size:12pt;">}</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmmolina.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmmolina.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmmolina.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmmolina.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmmolina.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmmolina.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmmolina.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmmolina.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmmolina.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmmolina.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=32&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmmolina.wordpress.com/2008/07/07/resolucion-de-la-serie-fibonaci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d2997c37c603e1ba23f823c5cc749fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dmmolina</media:title>
		</media:content>
	</item>
		<item>
		<title>Mi video</title>
		<link>http://dmmolina.wordpress.com/2007/10/01/mi-video/</link>
		<comments>http://dmmolina.wordpress.com/2007/10/01/mi-video/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 16:17:59 +0000</pubDate>
		<dc:creator>dmmolina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cariamanga]]></category>
		<category><![CDATA[UTPL]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://dmmolina.wordpress.com/2007/10/01/mi-video/</guid>
		<description><![CDATA[Mi video<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=12&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Mi video</p>
<span style="text-align:center; display: block;"><a href="http://dmmolina.wordpress.com/2007/10/01/mi-video/"><img src="http://img.youtube.com/vi/Rwh5xeLV5Iw/2.jpg" alt="" /></a></span>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmmolina.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmmolina.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmmolina.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmmolina.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmmolina.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmmolina.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmmolina.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmmolina.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmmolina.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmmolina.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=12&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmmolina.wordpress.com/2007/10/01/mi-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d2997c37c603e1ba23f823c5cc749fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dmmolina</media:title>
		</media:content>
	</item>
		<item>
		<title>¿QUE SE SIENTE SER UN NUEVO BLOGERO?</title>
		<link>http://dmmolina.wordpress.com/2007/07/17/%c2%bfque-se-siente-ser-un-nuevo-blogero/</link>
		<comments>http://dmmolina.wordpress.com/2007/07/17/%c2%bfque-se-siente-ser-un-nuevo-blogero/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 15:45:42 +0000</pubDate>
		<dc:creator>dmmolina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dmmolina.wordpress.com/2007/07/17/%c2%bfque-se-siente-ser-un-nuevo-blogero/</guid>
		<description><![CDATA[Ser un nuevo integrante de este este blog es la mejor oportunida que tenemos,  porque  nos permite expresarnos, compartir nuestros conocimientos a los demàs, permite publicar lo que yo crea pertinente, me siento bien ya que exixte la libertad de expresiòn.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=3&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote>
<p align="left"><strong></strong></p>
<p align="left"><strong><em>Ser un nuevo integrante de este este blog es la </em></strong><span id="more-3"></span><strong><em>mejor oportunida que tenemos,  porque  nos permite expresarnos, compartir nuestros conocimientos a los demàs, permite publicar lo que yo crea pertinente, me siento bien ya que exixte la libertad de expresiòn.</em></strong></p>
<p align="left"><strong><em> <a title="Enlace directo a archivo" href="http://dmmolina.files.wordpress.com/2007/07/taz.gif"><img src="http://dmmolina.files.wordpress.com/2007/07/taz.thumbnail.gif?w=98&#038;h=128" alt="taz.gif" width="98" height="128" /></a></em></strong></p>
</blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmmolina.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmmolina.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmmolina.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmmolina.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmmolina.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmmolina.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmmolina.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmmolina.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmmolina.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmmolina.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmmolina.wordpress.com&amp;blog=1380743&amp;post=3&amp;subd=dmmolina&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmmolina.wordpress.com/2007/07/17/%c2%bfque-se-siente-ser-un-nuevo-blogero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d2997c37c603e1ba23f823c5cc749fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dmmolina</media:title>
		</media:content>

		<media:content url="http://dmmolina.files.wordpress.com/2007/07/taz.thumbnail.gif" medium="image">
			<media:title type="html">taz.gif</media:title>
		</media:content>
	</item>
	</channel>
</rss>
