Conversation with Merlin [email protected] · Tue Nov 07 2023

con un ejemplo me explicas nodos con listas enlazadas

¡Claro! Permíteme explicarte el concepto de nodos y listas enlazadas utilizando un ejemploImaginemos que queremos almacenar una lista de nombres: "Ana", "Juan", "María", y "Pedro". En una lista enlazada, cada elemento de la lista se almacena en un nodo. Cada nodo contiene dos partes: un campo de datos para almacenar el valor y un puntero que apunta al siguiente nodo en la lista.

En este caso, tendríamos un nodo para cada nombre. El primer nodo, llamémoslo Nodo1, contendría el valor "Ana" y apuntaría al siguiente nodo, Nodo2. Nodo2 contendría "Juan" y apuntaría a Nodo3, que a su vez contendría "María" y apuntaría a Nodo4. Finalmente, Nodo4 contendría "Pedro" y apuntaría a un nodo especial llamado nodo nulo (NULL), que indica el final de la lista.

Visualmente, la lista enlazada se vería así:

Nodo1 -> "Ana" -> Nodo2 -> "Juan" -> Nodo3 -> "María" -> Nodo4 -> "Pedro" -> NULL

La ventaja de utilizar una lista enlazada en lugar de un arreglo estático es que podemos agregar o eliminar elementos de la lista de manera más eficiente. Al agregar un nuevo nombre, solo necesitamos crear un nuevo nodo y ajustar los punter para que apunten de manera correcta. De esta manera, podemos insertar nombres en cualquier posición la lista sin tener que mover todos los elementos.

¡Espero que este ejemplo te ayude a comprender los nod y las listas enlazadas! Si tienes alguna otra pregunta o necesitas más ejemplos, no dudes en preguntar.

%PDF-1.7 % 1 0 obj <>/Metadata 5540 0 R/ViewerPreferences 5541 0 R>> endobj 2 0 obj <> endobj 3 0 obj <>/XObject<>/Font<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 960 540] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xV]j1~_;XB$\`N=A;tFkb4oGG3\4 Ri-=N5f4x4O'7-q,B\:% ~t&'1P P 58#+t(Rpz @RZ! 2$M4nJR Uk/ B,h(`3ZN d~ YUCU`uR3*@5J) ce AD na\Yz&j_=gv = n3{TBM ~{n+- .3 Fz)g_oqw xX83B~C $\2e@+$JkB_" i$ m,#$fT'.XDEM}c=%;cP3-\R[T)vEf,^^Nb+;R"fXD<.x,Hd0cf@SsghsOfAi_V#I8QgY_]*jV1QR-J7C7MMmuU` h endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> stream x] sDV [ lXIJ,l Ic|a=.bxF7h,ak }g{N-v{j;`)%a1Bsa~\#"ZY:t1a&PNI9;m \|1ak@mj~k'& [vM3O=| 3+AOm ytGm [YoVm }'n5mS(#VA]_w| aD.c4hGx$|V|[ptO:hi*gX,|Ks_+\X`x<($-5_Hug#3p2:Z_t` MFAp[smcwtd$|[a&g?<=H6;] 7O3fC z'`6VGg ZKuoBa6<kf9\~ 76[U-&]+-( FS!(9h%. -mN"MY0OtN 9iVr m1 V*S,yZ=|VXj%MTMuziUj9EL p.i $! H[JXrlu/`Kq8y(kH\Z gy@l6A 9]6(V=?;C['ONOJ-on9t <s]q/ppo)sflx3'_T^9$[e)1E<7-xe"N/\I_eZDOK Vq)Y[&^$xO>t;'h"a8 e.^4{uh]&9:1_d}p7`.!8X` /p/1 QT=1>m,H~rXQ~zXYFX;%s$on6FH[@q[ W `s#>7cbtK]c,F|/~ Jcp>9'lTtNe:CRxEXfiws?-E!/^HFz~?O:ASoICinY!KnSQ5O!Og!psP2wgP=+]2zaR|q20zAm%Wb- {*2C -;&-0X/-(" 5;TWz?zt\NKgk oVBv+{f$ 4he'Z 0)zN=?0#i|(OM47#NS *2~ 7xcsIt{2:pF/Cn_-HROOy{F\c3a5JtV-*]aI#S3n!rI5784?fk?,W' e[R}{8c_>b o1pEw`x7'/<+1mGx;W&HfMY3[E{s13Y?S-;|*/2&|c!\/ QRs0Z0c6[>=T0 )Ud%; t0Xp}\ P.{vk8unXeMvc;e6)]Xac Cgmf#i*_il p=`^=,co/z+&xG:B;D!${^\M]F;#{izNUtAt=`X~g[1L:;ru=S/\+~"/ :5ZVoW/x QuME){]D`*J*(S'HCL7v*zP0uSTw2$"Sj;X .EQ\C48$fp6 E9.;ZCBhv']F",i[` dp[8 E*bF5aQpX+A|6VPvk'3\@iO$*KEL$ e l[+WL"09"A+F)%_ ~to*%8S.ZP2i= K`1_QDd__6ijJJ>P{ nr J` tTRz@\A>C=2;P-9@`T{7L:'F b]9uI hgl6H+ Fx(}SEU:L(` C D\IKeQ 1((@ ni\_SV"Z4;FtE_Q LIG D][mA x4:dA>P 2!p`8<Y%u++aJ /@D<4VheNV5PgR)/-T xbBm:3 72v`?v endstream endobj 8 0 obj <> stream x}PTU.. ~fbI2Bf4~c*hLSZ6#ihfheJjh(b ~{46xx{=?}/Ct&T P : RO"J%/IpG1q&ezQg>>("nC*G=Az++:V}-GZ"GM&G%qEqw]4\#>w)R p%:I^U]'Hu$S(BiqQ$"/U HSETE+%s<+nyRTooMB,!"tBB'[m:-^VO$O9P-uRyl_:}1*=pU%G}JQo6JN/I,q8#)FzE=|h*B$="CuI7}xD~-r^SfMz`Ec*k*q9M *$5JLlM  D >@=\IMFB7QeITf1J9s] ^r A)usuoe  + +1W4^f5tgc)Pm0WQ.(2 -Q:_Z :.(]K:Q#!yT8&$\3=L@9,Ji{Z'B0cH69~iG5EI)GuS1EroIFSMQb}q,22%USw/iK{Q[a/yScT<#g@H1w=jM8b4+'bo-\\I)NL>$y_ysfq AAeys?p b-Akn.EXR0KzDkKuf'*D=cH+OL]IY8< 0 I$T qrc /__i:n`C0 PZw~4D+CCe\!}Qh[:Re32YI* +bM?RSb/ >ZUm:Qs F,(zH5B_b5 l6XilQN&5OB64gnPP~]j:EO/W N C C X_X=x(L)hV@GW m)ZLLGm735g> endobj 10 0 obj <> endobj 11 0 obj <> stream xys+H< !@wSnGc?\ZwH$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"8; 1,Cu,H$D"H$Gox\ ?O?z-O_~w_~X;H$D"H$YzbyA7MnL8\GfkQ-O- s+ F jF[-^_J~]huGU?},6iMwgte^p'$v4}H$D"8[_Bw;[WXWf{Q~u[|nIGM FQQbuGMC91*Rk,jNVoU8\*r_aRn@wlvp?EWO'O[{w:U~5To_S UocSsP}XA$'Cb tvjeU_<D"q G$ J<)Wo DEQ1}*u=w=u%' 1U+}(uzd*T ]@?i>}kM]\Unpehi~k-y~.& [4"O]UaW;tLA.w\Fut W5wKkE?yA/^^9*qrWj* GV*@C}V@*AeBE'N&:r,H)uSAPTgtNO>Zk}A~J7@z#?H$e#jgO_l[lR1QWOfmi u[X8zUhT5dG`]K+U ]hOp@6(vsVQzdE@5\Ss yBC=*~ ~MYK7:ih*[aGVDw#`|Sa5h /s, 0N 8AT0.i1kd{(0^1 5K42-mcaT8}C|" 3Owv`5 /}pU i v@Z5#U~=CN=g }|/'< Qzfn !h;U/JL8vfV~T{"0]CC$*E_e P8K/]}g'hsbS_hf>DUO&TTHGm&*]2XL`6(jM ^C1:E#VTpehBtJ}pE];+n!(cMCQ E_&mcbHXCggNTn=Wa`Em-  {%QUINn@:yQ<,:aHv LTkOO*v kh W>-nkj

uv.mx

%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream x[KF0HLGpq8! R/Oq9VUw!%zc~TulRM^g]?rv?\/6=vWe'O, fbk/_%[n&SCL #=1 f|dO'1e[[GuA)Kx7$xDInOO{syV23V "Luq3RFwm$Z5[H&y+-agJAkvM[ .%ak8GSO;(p< Y{a IjWGdvow;tq>8>V:[urU2>U LzF3 `e!#>x9Fk6P26Z3Y:=~wb6hX^jr>P}RS`ZBN}CCLcV i`.OQ1sJ`]&~cI3JKI>{B`:<q8]u*bR:J4Zwz`SpsfzeyAya1ev%'ZZwE+vs<&t}vNxd[ &# iQ~:^eteCi'P5Z5s-S:wo ZU-q$WzjZ}YBcfUn!+Y6Fh \re(DjT 7BY0fb|3tG>,JiJ'(9QJuXQ$QG`:-c7?*H*8dhFrN"Cr XatiZu,.CsW_Ue`_t+2"d:A!8 =0>?FW'0vq72uE(Lv|o^ciNs@oqp`l5Gf4ZyA(Nv_WCA x>9KfV9K2u@-yX<cIcI<whSyE#vye+y-R:>|MYd!w?{uBRWHv(wmNL't5h(&ABY^U3av7e({N6m"%&}CvKNie>_ab[BC'l6YmW-OV7H'LIX^ .3]]]$\sE@^Ni@Z 8u8P (;07XPA\Mmq"Kh#wXIO !OEe;c~j4r1Od#9oBQM[d|EZk>( k~N`TT~}C=>> pfD281MLC3D;OuZpDPN0Iyfr,m4%)R|N:$sF_ 4{%poSH*oi5GX#(` >B~-,PN* 5t0)y2RL:?uwE<gtA]cm,\]MJM+6c9W=\)ka\8wWYAg<k$ `0|}p~r{r6)UM=Lu6p1;\g=A}mw%q*TerZ9D4Hab^9v$ qFSZlw\YIcmg3, 665jF]&9&Fir[ !>Bd@+Avb8Ea}}MS}I5j}vV_wJ\8khB-~t{2kQkWI]3a/^pvj-} sZ_#:=KN7mnam w  VemO8{|-[W< @J$G`PVi{Ft%e#,uC-xE }@*X Hm>YzAY3| \=,CWJ:+xQAh#>Pb] b Bf=VW4B"Z=_Q26m$Kb#>mL&!R?eiQ| *0 /g0JeE F'A=}'w |7BjHN8Ic;,@"27 v1$||V R7]sul++o?,J ]"m :7w+}&mSYoKZ)[3L1 ~:$jy-Z~c;(^Mp/_'r(8Q ./T&QDk!Jm;Jzj$Gn?R0)MPdxW%omze_ J [E->$ IV/+eRiz BfYH _H ?1;wO D ~$sRaI'Ux'"tu{Y7{5>{5 22pKkVN//-Pu|%r$X/ c~<-8'xbda1> endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj [ 12 0 R] endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj [ 21 0 R] endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 25 0 R/Group<>/Tabs/S/StructParents 1>> endobj 25 0 obj <> stream xZKomNO0 ( %" Zu ?*Gt|)U^o rUU_kx|_v~O5xqovj~sp?v}- 9?,5\*v;>?`Og1!xgY w\i ?kY(J^K_k^e ~`U jVglx` 8  rUady,zFzVBz7k*XOg7_gEjs*TgiK@:]]w~".A\UZA>X4dY-^'|qH\|'KEe:"yU"xMDXF,G&*~g^z9xGtn "N<&x 8D6G/W.A{aOX,d)\t8A- SGu kYBb= h/R3sQ~Z"hwZ%$'Kp6o@~)LyZ l*bp)0;b)k.`EKJS<[NB=BGP^raK0YFgn8+ RO5p36FNKi-Fh[iDT;x)|b]wAWp"C5<,r y^; .sY?Z) I+SZyxb`%G(`Lo5dpD+;$il .iSzgrpx,GXnDcdz&y]^oPwNDn1"J=kGmC5{)2?,Zg9?VAE pb}R!U*s $\'t0z3c2GNye -+ ~`i^= n R7 6Npzq{HD!|ZKj.|QR4%z4DxF+[r8O$zM($HF&OD7oY:CQ: 4<L27o"!]}h`s"\( A(A JD( ZAj"_t]BIAsUQ}N,n&{>K nxB+a=U*~ o5DT@ht5f* }?W*wm(O .M ',q{j$ !/ : KHt*_ QF`ZB~wCkT)9I|av iE,VZ1rP'gdGke>TiT:XJC? X)uL)BQps|!c6D4%X-ifNO^:-R(h47PTWHQ XVSn3+cl4'3m%Rnv K}RB*&tk+ZI^=)f&"yc(;7=mU!;J&[7N6Xo}"v{GN 1kA+F .4Sv^u luHZ[]H9qeIIT:oLqg-zT dXVaBQ6^)z]'SRW#)/V;5_u8^q]'v4fxObMusy@9HIO3(+^W>) m jC{qQ=2g7/BaN;VD!1~ M$)f(P1%#(]2ecXwt8<$r[bJ/<\ et`KU5h(#af$6#T:&v ~Dd W?asY@}/>.utq, V; :C%Qn>kVkkd4&k &3irSN^;'.uko0=Tm%BVI`m N<DvpL5qeb{;=mR8~Tr* 5seNf\k E\XWqoW{H}^MIg6u@m4kV<%vqv=OIv| [[6A3GW%G}bOp}zLR hAg4pZFJ5Q) S{Vbj$QD'S)dc[9kNmf nSEkd*"]*E4x~kf` u$S;sa> stream x]eek&?#XA d]T!xQxb$a1A \BHp"L r LcG^]kg={?]{g}zZzgp&K/""Nn?P;+`\oVP~;{Y& 0ioYFo*#CDJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9

udb.edu.sv

No debe confundirse con Lista. En ciencias de la computacin, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Una lista enlazada es un tipo de dato autorreferenciado porque contienen un puntero o enlace (en ingls link, del mismo significado) a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminacin de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto est previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: listas enlazadas simples, listas doblemente enlazadas, listas enlazadas circulares y listas enlazadas doblemente circulares. Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp, Scheme y Haskell tienen estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas. Historia[editar] Las listas enlazadas fueron desarrolladas en 1955-56 por Cliff Shaw y Herbert Simn en RAND Corporation, como la principal estructura de datos para su Lenguaje de Procesamiento de la Informacin (IPL). IPL fue usado por los autores para desarrollar varios programas relacionados con la inteligencia artificial, incluida la Mquina de la Teora General, el Solucionador de Problemas Generales, y un programa informtico de ajedrez. Se public en IRE Transactions on Information Theory en 1956, y en distintas conferencias entre 1957-1959, incluida Proceedings of the Western Joint Computer en 1957 y 1958, y en Information Processing (Procedentes de la primera conferencia internacional del procesamiento de la informacin de la Unesco) en 1959. El diagrama clsico actual, que consiste en bloques que representan nodos de la lista con flechas apuntando a los sucesivos nodos de la lista, apareci en Programming the Logic Theory Machine, de Newell y Shaw. Newell y Simn fueron reconocidos por el ACM Turing Award en 1975 por hacer contribuciones bsicas a la inteligencia artificial, a la psicologa del conocimiento humano y al procesamiento de las listas. El problema de los traductores del procesamiento natural del lenguaje condujo a Vctor Yngve del Instituto Tecnolgico de Massachusetts (MIT) a usar listas enlazadas como estructura de datos en su COMIT, lenguaje de programacin para computadoras, que investig en el campo de la Lingstica computacional. Un informe de este lenguaje, titulado A programming language for mechanical translation apareci en Mechanical Translation en 1958. LISP, el principal procesador de listas, fue creado en 1958. Una de las principales estructuras de datos de LISP es la lista enlazada. En torno a los 60, la utilidad de las listas enlazadas y los lenguajes que utilizaban estas estructuras como su principal representacin de datos estaba bien establecida. Bert Green, del Lincoln Laboratory del MIT, public un estudio titulado Computer languages for symbol manipulation en IRE Transaction on Human Factors in Electronics en marzo de 1961 que resuma las ventajas de las listas enlazadas. Un posterior artculo, A Comparison of list-processing computer languages de Bobrow y Raphael, apareca en Communications of the ACM en abril de 1964. Muchos sistemas operativos desarrollados por la empresa Technical Systems Consultants (originalmente de West Lafayette Indiana y despus de Raleigh, Carolina del Norte

es.wikipedia.org

con un ejemplo me explicas listas enlazadas en C#

¡Claro! Permíteme explic el concepto de listas enlazadas en C# utilizando un ejemplo.

En C#, las listas enlazadas se implementan utilizando la clase LinkedList disponible en el espacio de nombres System.Collections.Generic. Esta clase proporciona métodos y propiedades para trabajar con listas enlazadas de eficiente.

Imaginemos que queremos almacenar una lista de números enteros utilizando una lista enlazada. Para ello, primero debemos crear una instancia de la clase LinkedList:

LinkedList<int> listaEnlazada = new LinkedList<int>();

Luego, podemos agregar elementos a la lista enlazada utilizando el método AddLast() para agregar un elemento al final de la lista:

listaEnlazada.AddLast(10); listaEnlazada.AddLast(20); listaEnlazada.AddLast(30);

Esto creará una enlazada con los elementos 10, 20 y 30 en ese orden. Visualmente, se vería así:

10 -> 20 -> 30

Tamb podemos agregar elementos al principio de la lista utilizando el método AddFirst():

listaEnlazada.AddFirst(5);

Esto agregará el elemento 5 al principio de la lista:

5 -> 10 -> 20 -> 30

Además de agregar elementos, podemos realizar otras operaciones comunes en una lista enlazada, como eliminar elementos, buscar elementos, insertar elementos en posiciones específicas, etc. La clase LinkedList proporciona métodos para todas estas operaciones.

Por ejemplo, podemos utilizar el método Remove() para eliminar un elemento de la lista enlazada:

listaEnlazada.Remove(20);

Esto eliminará el elemento 20 de la lista:

5 -> 10 -> 30

En resumen, las listas enlazadas en C# son una estructura de datos flexible que nos permite agregar, eliminar manipular elementos de manera eficiente. Son especialmente útiles cuando necesitamos realizar muchas operaciones de inserción y eliminación en una lista.

Espero que este ejemplo te ayude a comprender las listas enlazadas en C#. Si tienes alguna otra pregunta, ¡no dudes en preguntar!

%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream x[KF0HLGpq8! R/Oq9VUw!%zc~TulRM^g]?rv?\/6=vWe'O, fbk/_%[n&SCL #=1 f|dO'1e[[GuA)Kx7$xDInOO{syV23V "Luq3RFwm$Z5[H&y+-agJAkvM[ .%ak8GSO;(p< Y{a IjWGdvow;tq>8>V:[urU2>U LzF3 `e!#>x9Fk6P26Z3Y:=~wb6hX^jr>P}RS`ZBN}CCLcV i`.OQ1sJ`]&~cI3JKI>{B`:<q8]u*bR:J4Zwz`SpsfzeyAya1ev%'ZZwE+vs<&t}vNxd[ &# iQ~:^eteCi'P5Z5s-S:wo ZU-q$WzjZ}YBcfUn!+Y6Fh \re(DjT 7BY0fb|3tG>,JiJ'(9QJuXQ$QG`:-c7?*H*8dhFrN"Cr XatiZu,.CsW_Ue`_t+2"d:A!8 =0>?FW'0vq72uE(Lv|o^ciNs@oqp`l5Gf4ZyA(Nv_WCA x>9KfV9K2u@-yX<cIcI<whSyE#vye+y-R:>|MYd!w?{uBRWHv(wmNL't5h(&ABY^U3av7e({N6m"%&}CvKNie>_ab[BC'l6YmW-OV7H'LIX^ .3]]]$\sE@^Ni@Z 8u8P (;07XPA\Mmq"Kh#wXIO !OEe;c~j4r1Od#9oBQM[d|EZk>( k~N`TT~}C=>> pfD281MLC3D;OuZpDPN0Iyfr,m4%)R|N:$sF_ 4{%poSH*oi5GX#(` >B~-,PN* 5t0)y2RL:?uwE<gtA]cm,\]MJM+6c9W=\)ka\8wWYAg<k$ `0|}p~r{r6)UM=Lu6p1;\g=A}mw%q*TerZ9D4Hab^9v$ qFSZlw\YIcmg3, 665jF]&9&Fir[ !>Bd@+Avb8Ea}}MS}I5j}vV_wJ\8khB-~t{2kQkWI]3a/^pvj-} sZ_#:=KN7mnam w  VemO8{|-[W< @J$G`PVi{Ft%e#,uC-xE }@*X Hm>YzAY3| \=,CWJ:+xQAh#>Pb] b Bf=VW4B"Z=_Q26m$Kb#>mL&!R?eiQ| *0 /g0JeE F'A=}'w |7BjHN8Ic;,@"27 v1$||V R7]sul++o?,J ]"m :7w+}&mSYoKZ)[3L1 ~:$jy-Z~c;(^Mp/_'r(8Q ./T&QDk!Jm;Jzj$Gn?R0)MPdxW%omze_ J [E->$ IV/+eRiz BfYH _H ?1;wO D ~$sRaI'Ux'"tu{Y7{5>{5 22pKkVN//-Pu|%r$X/ c~<-8'xbda1> endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj [ 12 0 R] endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj [ 21 0 R] endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 25 0 R/Group<>/Tabs/S/StructParents 1>> endobj 25 0 obj <> stream xZKomNO0 ( %" Zu ?*Gt|)U^o rUU_kx|_v~O5xqovj~sp?v}- 9?,5\*v;>?`Og1!xgY w\i ?kY(J^K_k^e ~`U jVglx` 8  rUady,zFzVBz7k*XOg7_gEjs*TgiK@:]]w~".A\UZA>X4dY-^'|qH\|'KEe:"yU"xMDXF,G&*~g^z9xGtn "N<&x 8D6G/W.A{aOX,d)\t8A- SGu kYBb= h/R3sQ~Z"hwZ%$'Kp6o@~)LyZ l*bp)0;b)k.`EKJS<[NB=BGP^raK0YFgn8+ RO5p36FNKi-Fh[iDT;x)|b]wAWp"C5<,r y^; .sY?Z) I+SZyxb`%G(`Lo5dpD+;$il .iSzgrpx,GXnDcdz&y]^oPwNDn1"J=kGmC5{)2?,Zg9?VAE pb}R!U*s $\'t0z3c2GNye -+ ~`i^= n R7 6Npzq{HD!|ZKj.|QR4%z4DxF+[r8O$zM($HF&OD7oY:CQ: 4<L27o"!]}h`s"\( A(A JD( ZAj"_t]BIAsUQ}N,n&{>K nxB+a=U*~ o5DT@ht5f* }?W*wm(O .M ',q{j$ !/ : KHt*_ QF`ZB~wCkT)9I|av iE,VZ1rP'gdGke>TiT:XJC? X)uL)BQps|!c6D4%X-ifNO^:-R(h47PTWHQ XVSn3+cl4'3m%Rnv K}RB*&tk+ZI^=)f&"yc(;7=mU!;J&[7N6Xo}"v{GN 1kA+F .4Sv^u luHZ[]H9qeIIT:oLqg-zT dXVaBQ6^)z]'SRW#)/V;5_u8^q]'v4fxObMusy@9HIO3(+^W>) m jC{qQ=2g7/BaN;VD!1~ M$)f(P1%#(]2ecXwt8<$r[bJ/<\ et`KU5h(#af$6#T:&v ~Dd W?asY@}/>.utq, V; :C%Qn>kVkkd4&k &3irSN^;'.uko0=Tm%BVI`m N<DvpL5qeb{;=mR8~Tr* 5seNf\k E\XWqoW{H}^MIg6u@m4kV<%vqv=OIv| [[6A3GW%G}bOp}zLR hAg4pZFJ5Q) S{Vbj$QD'S)dc[9kNmf nSEkd*"]*E4x~kf` u$S;sa> stream x]eek&?#XA d]T!xQxb$a1A \BHp"L r LcG^]kg={?]{g}zZzgp&K/""Nn?P;+`\oVP~;{Y& 0ioYFo*#CDJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9

udb.edu.sv

Si queremos leer un nodo es necesario comenzar a recorrer la lista desde el principio, el puntero al siguiente es el que apunta al siguiente elemento. El movimiento a travs de la lista se realiza en una sola direccin, desde el primer al ltimo elemento. Mientras que en un array el acceso es aleatorio, como contrapartida una lista slo utiliza la memoria si tiene datos mientras que el array ocupa toda la memoria asignada aunque est vaco.Existe un objeto de lista simplemente enlazada en visual studio, para acceder a es necesario invocar las siguientes libreras de microsoft using System; using System.Text; using System.Collections.Generic; Despus podemos utilizar el objeto de la librera llamado LinkedList Construccin de la Lista Cada elemento de la lista contiene uno o varios campos con los datosy un puntero apuntando a la direccin donde est ubicado el siguiente nodo.Cada objeto de la lista se llama nodo y contiene como se ha dicho los datos y un puntero al siguiente elemento. La lista comienza desde la pila con un puntero apuntando al primer nodo, despus el primer nodo tiene un puntero apuntando al segundo nodo y as sucesivamente hasta que el puntero del ltimo nodo contiene null. Operaciones sobre listas enlazadas Una lista enlazada vaca es un Null. Nodo y Puntero Un nodo es una variable de un tipo dado, entero, cadena, etc almacenada en la memoria. En este caso es una variable de tipo object. Un puntero es un dato que contiene la direccin del siguiente nodo. En este caso es un objeto de tipo nodo que apunta al siguiente nodo llamado next. public class Nodo { public Object dato; // dato contenido en el nodo public Nodo siguiente; //puntero al siguiente nodo } Insertar un elemento en la lista Para insertar un nuevo elemento en la lista se sigue la siguiente secuencia: -Declaracin del elemento a insertar. -Asignacin de la memoria para el nuevo elemento - Insertar el contenido en los datos. -Actualizar los punteros que apuntan al primer y ltimo elemento. -Actualizar el tamao de la lista. Adems se presentan varios casos a la hora de insertar un elemento en una lista: - 1. Insercin en una lista vaca. - 2. Insercin al comienzo de la lista. - 3. Insercin al final de la lista. - 4. Insercin en otra parte de la lista. Insercin en una lista vaca Las etapas para insertar un elemento en una lista vaca son las siguientes: -Reserva de memoria para el nuevo elemento. -Introducir el nuevo elemento en memoria. -Como es una lista vaca el puntero hacia el siguiente elemento apuntar a Null. -Los punterosinicioyfinapuntaran hacia el nuevo elemento. - Se actualiza la variable que contiene el tamao de la lista. Insercin al comienzo de la lista -Reserva de memoria para el nuevo elemento. Nodo Aadir = new Nodo(); -Introducir el nuevo elemento en memoria. Aadir.dato = dato; -El puntero hacia el siguiente elemento apuntar al primer elemento. Aadir.siguiente = comienzo; -El puntero inicio apuntar al nuevo elemento. comienzo = Aadir; -El puntero fin se queda sin cambios. - Se actualiza la variable que contiene el tamao de la lista. Esto lo podemos implementar ya en el siguiente cdigo public void InsertarComienzo(Object dato) { Nodo Aadir = new Nodo(); Aadir.dato = dato; Aadir.siguiente = comienzo; comienzo = Aadir; } Insercin al final de la lista -Reserva de memoria para el nuevo elemento. Nodo aadir = new Nodo(); -Introducir el nuevo elemento en memoria. aadir.dato = dato; -El puntero hacia el siguiente elemento apuntar al ltimo elemento. comienzo.siguiente = null; -El puntero de fin apunta hacia el nuevo elemento introducido. while (actual.siguiente != null) { actual = actual.siguiente; } -El puntero inicio se queda sin cambios. - Se actualiza la variable que contiene el tamao de la lista. public void InsertarFinal(Object dato) { if (comienzo == null) { comienzo = new Nodo(); comienzo.dato = dato; comienzo.siguiente = null; } else { Nodo aadir = new Nodo(); aadir.dato = dato; Nodo actual = comienzo; while (actual.siguiente != null) { actual = actual.siguien

analisisyprogramacionoop.blogspot.com

Vamos a seguir desarrollando el post anterior (C# Clases autorreferenciadas) para generar una lista enlazada, una lista enlazada es una coleccin lineal o una secuencia de nodos representados con clases autorreferenciadas. El acceso a la lista se realiza desde el primero nodo (raz o head) y se recorre accediendo al miembro que apunta al siguiente nodo y as hasta el final (el miembro del ltimo nodo que apunta al siguiente se define como null para evitar errores). Normalmente las listas tienen las operaciones comunes para trabajar con sus nodos, vamos a definir mtodos para: Construir una lista vaca y darle un nombre. Insertar un nodo en la cabecera. Insertar un nodo al final. Eliminar el primer nodo de la lista. Eliminar un nodo del final de la lista. Comprobar si una lista est vaca. Imprimir por pantalla el contenido. Obtener el nmero de elementos o nodos de la lista. Clase para definir un nodo Similar al ejemplo anterior definimos una clase que represente un nodo. Definimos dos constructores, el segundo permite crear un nodo y definir el nodo al que apunta como siguiente elemento en la lista. Lo ms remarcable de la clase es la referencia object. Nos permite almacenar tipos de datos simples como si fueran objetos. El tipo object es un alias para Object en .NET. Todos los tipos de variables son herencia directa de este tipo. Podemos asignar valores de cualquier tipo a variables de tipo object. Cuando una variable se convierte a un tipo object a esta operacin se le llama boxing o boxed. Cuando se realiza la operacin inversa se denomina unboxing. Clase lista La clase lista tiene contiene como miembros head y tail. Son respectivamente referencias al primer y ltimo nodo de la lista, tambin definimos una variable string para asignar un nombre a la lista. Definimos un mtodo que nos resultar de utilidad ms adelante, el mtodoIsListEmptyretorna true si la cabeza de lista apunta a null. Ahora definimos un mtodo para operar sobre la lista insertando un nuevo nodo al inicio de la misma. Si la lista esta recin creada o vaca la cabeza y la cola apunta al nuevo y nico la misma. En caso contrario la cabeza apunta al nuevo nodo y le pasamos el nodo de cabeza actual como miembro para que quede en segundo lugar. Para aadir un nodo al final definimos el siguiente mtodo: Antes de continuar con un mtodo para borrar un elemento del inicio de la lista vamos a definir una claseEmptyListExceptionpara lanzar una excepcin cuando se producen operaciones ilegales sobra la lista, por ejemplo si la lista est vaca. UsamosSystem.ApplicationExceptionpara excepciones generadas por nuestra programa. Ahora ya podemos crear un mtodo para borrar un elemento de la cabecera de la lista. Si la lista est vaca lanza una excepcin que podemos capturar y tratar desde el programa principal. Despus obtenemos el miembro del nodo de cabecera y restablece las referencias del primer y ltimo nodo (si solo hay un nodo en la lista head y last quedaran a null, si hay ms de un elemento avanzamos al siguiente nodo la cabecera). Visto el anterior ejemplo borrar el ltimo nodo es similar. Pero en este caso el mtodo que debemos seguir nodo no es muy eficiente (esto se solucionara con una lista doblemente enlazada). Recorremos desde el primero nodo uno de detrs de otro hasta que el nodo siguiente no sea el ltimo, de esta manera hacemos que apunte a null quedando fuera el ltimo nodo. Ahora solo nos queda un mtodo para imprimir los nodos de la lista. Ahora veamos como se puede utilizar: Referencias externas Linked List en Wikipedia.

ikerlandajuela.wordpress.com

con un ejemplo me explicas nodos con listas enlazadas

Por supuesto, permíteme explicarte el concepto de nodos con listas enlaz utilizando un ejemplo.

En una lista enazada, cada elemento se almacena en un nodo. Cada nodo contiene dos partes: una para almacenar los datos y otra para apuntar al siguiente nodo en la lista.

Supongamos que deseamos crear una lista enlazada para almacenar los números 1, 2, 3 y 4. Creamos una clase Nodo para representar cada nodo de la lista enlazada en C#. La clase Nodo tiene dos propiedades: Dato para almacenar los datos y Siguiente para apuntar al siguiente nodo.

public class Nodo { public int Dato; public Nodo Siguiente; }

Ahora, vamos a crear los nodos y enlazarlos para formar la lista. Primero, creamos el primer nodo con el número 1:

Nodo nodo1 = new Nodo(); nodo1.Dato = 1;

Luego, creamos el segundo nodo con el número 2:

Nodo nodo2 = new Nodo(); nodo2.Dato = 2;

Después, enlazamos el primer nodo (nodo1) con el nodo (nodo2) estableciendo el puntero Siguiente del primer nodo al segundo nodo:

nodo1.Siguiente = nodo2;

Repetimos el mismo proceso para los nodos restantes. Creamos el tercer nodo con el número 3 y enazamos el segundo nodo con el tercer nodo:

Nodo nodo3 = new Nodo(); nodo3.Dato = 3; nodo2.Siguiente = nodo3;

Finalmente, creamos el cuarto nodo con el número 4 y enlazamos el tercer nodo con el cuarto nodo:

Nodo nodo4 = new Nodo(); nodo4.Dato = 4; nodo3.Siguiente = nodo4;

esta manera, hemos construido una lista enlazada los nodos enlazados entre sí. Visualmente, se vería así:

1 -> 2 3 -> 4

Cada nodo contiene dato correspondiente y un puntero que apunta al siguiente nodo en la lista.

Espero que este ejemplo te ayude a comprender cómo funcionan los nodos en las listas enazadas en C#. Si tienes alguna otra pregunta, ¡no dudes en preguntar!

%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream x[KF0HLGpq8! R/Oq9VUw!%zc~TulRM^g]?rv?\/6=vWe'O, fbk/_%[n&SCL #=1 f|dO'1e[[GuA)Kx7$xDInOO{syV23V "Luq3RFwm$Z5[H&y+-agJAkvM[ .%ak8GSO;(p< Y{a IjWGdvow;tq>8>V:[urU2>U LzF3 `e!#>x9Fk6P26Z3Y:=~wb6hX^jr>P}RS`ZBN}CCLcV i`.OQ1sJ`]&~cI3JKI>{B`:<q8]u*bR:J4Zwz`SpsfzeyAya1ev%'ZZwE+vs<&t}vNxd[ &# iQ~:^eteCi'P5Z5s-S:wo ZU-q$WzjZ}YBcfUn!+Y6Fh \re(DjT 7BY0fb|3tG>,JiJ'(9QJuXQ$QG`:-c7?*H*8dhFrN"Cr XatiZu,.CsW_Ue`_t+2"d:A!8 =0>?FW'0vq72uE(Lv|o^ciNs@oqp`l5Gf4ZyA(Nv_WCA x>9KfV9K2u@-yX<cIcI<whSyE#vye+y-R:>|MYd!w?{uBRWHv(wmNL't5h(&ABY^U3av7e({N6m"%&}CvKNie>_ab[BC'l6YmW-OV7H'LIX^ .3]]]$\sE@^Ni@Z 8u8P (;07XPA\Mmq"Kh#wXIO !OEe;c~j4r1Od#9oBQM[d|EZk>( k~N`TT~}C=>> pfD281MLC3D;OuZpDPN0Iyfr,m4%)R|N:$sF_ 4{%poSH*oi5GX#(` >B~-,PN* 5t0)y2RL:?uwE<gtA]cm,\]MJM+6c9W=\)ka\8wWYAg<k$ `0|}p~r{r6)UM=Lu6p1;\g=A}mw%q*TerZ9D4Hab^9v$ qFSZlw\YIcmg3, 665jF]&9&Fir[ !>Bd@+Avb8Ea}}MS}I5j}vV_wJ\8khB-~t{2kQkWI]3a/^pvj-} sZ_#:=KN7mnam w  VemO8{|-[W< @J$G`PVi{Ft%e#,uC-xE }@*X Hm>YzAY3| \=,CWJ:+xQAh#>Pb] b Bf=VW4B"Z=_Q26m$Kb#>mL&!R?eiQ| *0 /g0JeE F'A=}'w |7BjHN8Ic;,@"27 v1$||V R7]sul++o?,J ]"m :7w+}&mSYoKZ)[3L1 ~:$jy-Z~c;(^Mp/_'r(8Q ./T&QDk!Jm;Jzj$Gn?R0)MPdxW%omze_ J [E->$ IV/+eRiz BfYH _H ?1;wO D ~$sRaI'Ux'"tu{Y7{5>{5 22pKkVN//-Pu|%r$X/ c~<-8'xbda1> endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj [ 12 0 R] endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj [ 21 0 R] endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 25 0 R/Group<>/Tabs/S/StructParents 1>> endobj 25 0 obj <> stream xZKomNO0 ( %" Zu ?*Gt|)U^o rUU_kx|_v~O5xqovj~sp?v}- 9?,5\*v;>?`Og1!xgY w\i ?kY(J^K_k^e ~`U jVglx` 8  rUady,zFzVBz7k*XOg7_gEjs*TgiK@:]]w~".A\UZA>X4dY-^'|qH\|'KEe:"yU"xMDXF,G&*~g^z9xGtn "N<&x 8D6G/W.A{aOX,d)\t8A- SGu kYBb= h/R3sQ~Z"hwZ%$'Kp6o@~)LyZ l*bp)0;b)k.`EKJS<[NB=BGP^raK0YFgn8+ RO5p36FNKi-Fh[iDT;x)|b]wAWp"C5<,r y^; .sY?Z) I+SZyxb`%G(`Lo5dpD+;$il .iSzgrpx,GXnDcdz&y]^oPwNDn1"J=kGmC5{)2?,Zg9?VAE pb}R!U*s $\'t0z3c2GNye -+ ~`i^= n R7 6Npzq{HD!|ZKj.|QR4%z4DxF+[r8O$zM($HF&OD7oY:CQ: 4<L27o"!]}h`s"\( A(A JD( ZAj"_t]BIAsUQ}N,n&{>K nxB+a=U*~ o5DT@ht5f* }?W*wm(O .M ',q{j$ !/ : KHt*_ QF`ZB~wCkT)9I|av iE,VZ1rP'gdGke>TiT:XJC? X)uL)BQps|!c6D4%X-ifNO^:-R(h47PTWHQ XVSn3+cl4'3m%Rnv K}RB*&tk+ZI^=)f&"yc(;7=mU!;J&[7N6Xo}"v{GN 1kA+F .4Sv^u luHZ[]H9qeIIT:oLqg-zT dXVaBQ6^)z]'SRW#)/V;5_u8^q]'v4fxObMusy@9HIO3(+^W>) m jC{qQ=2g7/BaN;VD!1~ M$)f(P1%#(]2ecXwt8<$r[bJ/<\ et`KU5h(#af$6#T:&v ~Dd W?asY@}/>.utq, V; :C%Qn>kVkkd4&k &3irSN^;'.uko0=Tm%BVI`m N<DvpL5qeb{;=mR8~Tr* 5seNf\k E\XWqoW{H}^MIg6u@m4kV<%vqv=OIv| [[6A3GW%G}bOp}zLR hAg4pZFJ5Q) S{Vbj$QD'S)dc[9kNmf nSEkd*"]*E4x~kf` u$S;sa> stream x]eek&?#XA d]T!xQxb$a1A \BHp"L r LcG^]kg={?]{g}zZzgp&K/""Nn?P;+`\oVP~;{Y& 0ioYFo*#CDJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9!|0TR>*QFEn) (#"DJz[C%-`^Pr0B/BtK`D9

udb.edu.sv

Si queremos leer un nodo es necesario comenzar a recorrer la lista desde el principio, el puntero al siguiente es el que apunta al siguiente elemento. El movimiento a travs de la lista se realiza en una sola direccin, desde el primer al ltimo elemento. Mientras que en un array el acceso es aleatorio, como contrapartida una lista slo utiliza la memoria si tiene datos mientras que el array ocupa toda la memoria asignada aunque est vaco.Existe un objeto de lista simplemente enlazada en visual studio, para acceder a es necesario invocar las siguientes libreras de microsoft using System; using System.Text; using System.Collections.Generic; Despus podemos utilizar el objeto de la librera llamado LinkedList Construccin de la Lista Cada elemento de la lista contiene uno o varios campos con los datosy un puntero apuntando a la direccin donde est ubicado el siguiente nodo.Cada objeto de la lista se llama nodo y contiene como se ha dicho los datos y un puntero al siguiente elemento. La lista comienza desde la pila con un puntero apuntando al primer nodo, despus el primer nodo tiene un puntero apuntando al segundo nodo y as sucesivamente hasta que el puntero del ltimo nodo contiene null. Operaciones sobre listas enlazadas Una lista enlazada vaca es un Null. Nodo y Puntero Un nodo es una variable de un tipo dado, entero, cadena, etc almacenada en la memoria. En este caso es una variable de tipo object. Un puntero es un dato que contiene la direccin del siguiente nodo. En este caso es un objeto de tipo nodo que apunta al siguiente nodo llamado next. public class Nodo { public Object dato; // dato contenido en el nodo public Nodo siguiente; //puntero al siguiente nodo } Insertar un elemento en la lista Para insertar un nuevo elemento en la lista se sigue la siguiente secuencia: -Declaracin del elemento a insertar. -Asignacin de la memoria para el nuevo elemento - Insertar el contenido en los datos. -Actualizar los punteros que apuntan al primer y ltimo elemento. -Actualizar el tamao de la lista. Adems se presentan varios casos a la hora de insertar un elemento en una lista: - 1. Insercin en una lista vaca. - 2. Insercin al comienzo de la lista. - 3. Insercin al final de la lista. - 4. Insercin en otra parte de la lista. Insercin en una lista vaca Las etapas para insertar un elemento en una lista vaca son las siguientes: -Reserva de memoria para el nuevo elemento. -Introducir el nuevo elemento en memoria. -Como es una lista vaca el puntero hacia el siguiente elemento apuntar a Null. -Los punterosinicioyfinapuntaran hacia el nuevo elemento. - Se actualiza la variable que contiene el tamao de la lista. Insercin al comienzo de la lista -Reserva de memoria para el nuevo elemento. Nodo Aadir = new Nodo(); -Introducir el nuevo elemento en memoria. Aadir.dato = dato; -El puntero hacia el siguiente elemento apuntar al primer elemento. Aadir.siguiente = comienzo; -El puntero inicio apuntar al nuevo elemento. comienzo = Aadir; -El puntero fin se queda sin cambios. - Se actualiza la variable que contiene el tamao de la lista. Esto lo podemos implementar ya en el siguiente cdigo public void InsertarComienzo(Object dato) { Nodo Aadir = new Nodo(); Aadir.dato = dato; Aadir.siguiente = comienzo; comienzo = Aadir; } Insercin al final de la lista -Reserva de memoria para el nuevo elemento. Nodo aadir = new Nodo(); -Introducir el nuevo elemento en memoria. aadir.dato = dato; -El puntero hacia el siguiente elemento apuntar al ltimo elemento. comienzo.siguiente = null; -El puntero de fin apunta hacia el nuevo elemento introducido. while (actual.siguiente != null) { actual = actual.siguiente; } -El puntero inicio se queda sin cambios. - Se actualiza la variable que contiene el tamao de la lista. public void InsertarFinal(Object dato) { if (comienzo == null) { comienzo = new Nodo(); comienzo.dato = dato; comienzo.siguiente = null; } else { Nodo aadir = new Nodo(); aadir.dato = dato; Nodo actual = comienzo; while (actual.siguiente != null) { actual = actual.siguien

analisisyprogramacionoop.blogspot.com

El problema con las respuestas que has recibido hasta ahora es que lo que te dan como resultado es una matriz de adyacencia, que no es lo que necesitas. En la matriz de adyacencia las "coordenadas" de un punto de la matriz (fila y columna) representan nodos del grafo ("A", "B", etc.) y el contenido de ese elemento de la matriz representa si hay unin o no entre los dos nodos. As, si en la fila "A" columna "B" hay un 1, es que "A" y "B" estn unidos y si hay un 0 es que no. Es otra forma de representar el grafo, alternativa a tu lista de nodos y listas. Pero no es un "grfico" del grafo. No coloca adyacentes los nodos que estn unidos, que es lo que necesitas. Por otro lado, la representacin en forma de matriz que pides, es ambigua. Si el resultado fuese: A B C D cmo sabras cules estn conectados con cules? Slo por estar unos al lado de otros no tienes esa informacin. Esta matriz podra representar tanto al grafo A->B->D->C, como al A->C->D->B como a B->A->C->D, etc.. De todas formas asumiendo que realmente es esta salida (ambigua) la que necesitas, se me ha ocurrido un algoritmo para obtener lo que pides, pero lo he implementado en Python porque requiere mucho menos cdigo (y porque el C# no es lo mo). La implementacin python puede servir para demostrar mediante ejemplos que el algoritmo funciona. Si sabes python te puede servir de inspiracin para "traducirlo" a C#. Pero an si no sabes python, tratar de describir el algoritmo con palabras y pseudocdigo para que te sea ms sencillo de entender y adaptar. El algoritmo La idea parte de preparar una matriz de tamao suficiente como para albergar el grfico que queremos como resultado, buscar el nodo del grafo que ms vecinos tiene (el mximo es 4) y colocar ese nodo en el centro de la matriz, para despus ir pintando sus vecinos mediante llamadas recursivas (que a su vez pintarn a sus vecinos, etc.) De entrada, no sabemos qu tamao necesitaremos para esa matriz, de modo que para ir por la va fcil, le doy tamao "abundante". En concreto crear una matriz cuadrada que tenga como nmero de filas y de columnas el doble del nmero de nodos en tu grafo. De este modo, incluso el "caso peor" cabe. Ese caso peor consiste en una "cadena de nodos", que comenzara en el centro y llegara linealmente hasta un borde. Ms adelante me ocupar de, una vez creado "el grfico" (es decir, rellena esa matriz), recortarla para eliminar las filas y columnas que hayan quedado vacas. As pues, el pseudocdigo de la solucin general sera: Averiguar el nmero total de nodos a representar --> N Averiguar el "nombre" del nodo que tiene ms vecinos --> inicio Crear un grid de 2Nx2N y rellenarlo con un cierto carcter de relleno Llamar a una funcin colocar_vecinos(inicio, N, N) (esta funcin modifica el grid recursivamente hasta haber colocado a todos) Recortar el grid para eliminar filas y columnas que contengan solo relleno Como ves, la clave ahora es la funcin recursiva que coloca los nodos. Funcionara en la forma siguiente: funcion colocar_vecinos(nodo, x, y) Si el nodo no est en el grafo, retornar Obtener la lista de vecinos del nodo Colocar el nodo en grid[x,y] Eliminar el nodo del grafo Para cada vecino: calcular coordenadas x, y, donde poner al vecino colocar_vecinos(vecino, x, y) Vemos que esa funcin modifica el grafo, pues va eliminando a los nodos que ya ha colocado (para evitar que intenten ser colocados de nuevo cuando vuelven a aparecer como vecinos de otros). Ya que esto destruye el grafo original ser conveniente sacar una copia del grafo antes de llamar a esta funcin. Las coordenadas donde colocar cada vecino seran simplemente (x-1,y), (x,y+1), (x+1,y) y (x,y-1), segn se va iterando por la lista de vecinos. Implementacin Todo lo anterior se implementa en el siguiente cdigo Python, que espera que el grafo le sea dado como un diccionario en el que las claves son los "nombres" de los nodos, y los valores son las listas de vecinos. Por ejemplo, el grafo que das como ejemplo en la pregunta sera representado por: grafo = { "A": [

es.stackoverflow.com

y nodo4.siguiente a donde apuntaria

En una lista enlazada, el puntero "nodo4.siguiente" apuntaría a "NULL" o "nulo". Esto indica que no hay más nodos después del nodo4 en la lista enlazada.

En el ejemplo de la lista enlazada que proporcionaste anteriormente, la lista estaría representada de la siguiente manera:

nodo1 -> nodo2 -> nodo3 -> nodo4 -> NULL

El puntero "nodo4.siguiente" apuntaría a NULL, lo que indica el final de la.

%PDF-1.7 % 1 0 obj <>/Metadata 5540 0 R/ViewerPreferences 5541 0 R>> endobj 2 0 obj <> endobj 3 0 obj <>/XObject<>/Font<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 960 540] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xV]j1~_;XB$\`N=A;tFkb4oGG3\4 Ri-=N5f4x4O'7-q,B\:% ~t&'1P P 58#+t(Rpz @RZ! 2$M4nJR Uk/ B,h(`3ZN d~ YUCU`uR3*@5J) ce AD na\Yz&j_=gv = n3{TBM ~{n+- .3 Fz)g_oqw xX83B~C $\2e@+$JkB_" i$ m,#$fT'.XDEM}c=%;cP3-\R[T)vEf,^^Nb+;R"fXD<.x,Hd0cf@SsghsOfAi_V#I8QgY_]*jV1QR-J7C7MMmuU` h endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> stream x] sDV [ lXIJ,l Ic|a=.bxF7h,ak }g{N-v{j;`)%a1Bsa~\#"ZY:t1a&PNI9;m \|1ak@mj~k'& [vM3O=| 3+AOm ytGm [YoVm }'n5mS(#VA]_w| aD.c4hGx$|V|[ptO:hi*gX,|Ks_+\X`x<($-5_Hug#3p2:Z_t` MFAp[smcwtd$|[a&g?<=H6;] 7O3fC z'`6VGg ZKuoBa6<kf9\~ 76[U-&]+-( FS!(9h%. -mN"MY0OtN 9iVr m1 V*S,yZ=|VXj%MTMuziUj9EL p.i $! H[JXrlu/`Kq8y(kH\Z gy@l6A 9]6(V=?;C['ONOJ-on9t <s]q/ppo)sflx3'_T^9$[e)1E<7-xe"N/\I_eZDOK Vq)Y[&^$xO>t;'h"a8 e.^4{uh]&9:1_d}p7`.!8X` /p/1 QT=1>m,H~rXQ~zXYFX;%s$on6FH[@q[ W `s#>7cbtK]c,F|/~ Jcp>9'lTtNe:CRxEXfiws?-E!/^HFz~?O:ASoICinY!KnSQ5O!Og!psP2wgP=+]2zaR|q20zAm%Wb- {*2C -;&-0X/-(" 5;TWz?zt\NKgk oVBv+{f$ 4he'Z 0)zN=?0#i|(OM47#NS *2~ 7xcsIt{2:pF/Cn_-HROOy{F\c3a5JtV-*]aI#S3n!rI5784?fk?,W' e[R}{8c_>b o1pEw`x7'/<+1mGx;W&HfMY3[E{s13Y?S-;|*/2&|c!\/ QRs0Z0c6[>=T0 )Ud%; t0Xp}\ P.{vk8unXeMvc;e6)]Xac Cgmf#i*_il p=`^=,co/z+&xG:B;D!${^\M]F;#{izNUtAt=`X~g[1L:;ru=S/\+~"/ :5ZVoW/x QuME){]D`*J*(S'HCL7v*zP0uSTw2$"Sj;X .EQ\C48$fp6 E9.;ZCBhv']F",i[` dp[8 E*bF5aQpX+A|6VPvk'3\@iO$*KEL$ e l[+WL"09"A+F)%_ ~to*%8S.ZP2i= K`1_QDd__6ijJJ>P{ nr J` tTRz@\A>C=2;P-9@`T{7L:'F b]9uI hgl6H+ Fx(}SEU:L(` C D\IKeQ 1((@ ni\_SV"Z4;FtE_Q LIG D][mA x4:dA>P 2!p`8<Y%u++aJ /@D<4VheNV5PgR)/-T xbBm:3 72v`?v endstream endobj 8 0 obj <> stream x}PTU.. ~fbI2Bf4~c*hLSZ6#ihfheJjh(b ~{46xx{=?}/Ct&T P : RO"J%/IpG1q&ezQg>>("nC*G=Az++:V}-GZ"GM&G%qEqw]4\#>w)R p%:I^U]'Hu$S(BiqQ$"/U HSETE+%s<+nyRTooMB,!"tBB'[m:-^VO$O9P-uRyl_:}1*=pU%G}JQo6JN/I,q8#)FzE=|h*B$="CuI7}xD~-r^SfMz`Ec*k*q9M *$5JLlM  D >@=\IMFB7QeITf1J9s] ^r A)usuoe  + +1W4^f5tgc)Pm0WQ.(2 -Q:_Z :.(]K:Q#!yT8&$\3=L@9,Ji{Z'B0cH69~iG5EI)GuS1EroIFSMQb}q,22%USw/iK{Q[a/yScT<#g@H1w=jM8b4+'bo-\\I)NL>$y_ysfq AAeys?p b-Akn.EXR0KzDkKuf'*D=cH+OL]IY8< 0 I$T qrc /__i:n`C0 PZw~4D+CCe\!}Qh[:Re32YI* +bM?RSb/ >ZUm:Qs F,(zH5B_b5 l6XilQN&5OB64gnPP~]j:EO/W N C C X_X=x(L)hV@GW m)ZLLGm735g> endobj 10 0 obj <> endobj 11 0 obj <> stream xys+H< !@wSnGc?\ZwH$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"8; 1,Cu,H$D"H$Gox\ ?O?z-O_~w_~X;H$D"H$YzbyA7MnL8\GfkQ-O- s+ F jF[-^_J~]huGU?},6iMwgte^p'$v4}H$D"8[_Bw;[WXWf{Q~u[|nIGM FQQbuGMC91*Rk,jNVoU8\*r_aRn@wlvp?EWO'O[{w:U~5To_S UocSsP}XA$'Cb tvjeU_<D"q G$ J<)Wo DEQ1}*u=w=u%' 1U+}(uzd*T ]@?i>}kM]\Unpehi~k-y~.& [4"O]UaW;tLA.w\Fut W5wKkE?yA/^^9*qrWj* GV*@C}V@*AeBE'N&:r,H)uSAPTgtNO>Zk}A~J7@z#?H$e#jgO_l[lR1QWOfmi u[X8zUhT5dG`]K+U ]hOp@6(vsVQzdE@5\Ss yBC=*~ ~MYK7:ih*[aGVDw#`|Sa5h /s, 0N 8AT0.i1kd{(0^1 5K42-mcaT8}C|" 3Owv`5 /}pU i v@Z5#U~=CN=g }|/'< Qzfn !h;U/JL8vfV~T{"0]CC$*E_e P8K/]}g'hsbS_hf>DUO&TTHGm&*]2XL`6(jM ^C1:E#VTpehBtJ}pE];+n!(cMCQ E_&mcbHXCggNTn=Wa`Em-  {%QUINn@:yQ<,:aHv LTkOO*v kh W>-nkj

uv.mx

%PDF-1.5 % 2082 0 obj<> endobj xref 2082 35 0000000016 00000 n 0000001655 00000 n 0000001792 00000 n 0000001025 00000 n 0000001880 00000 n 0000002081 00000 n 0000002338 00000 n 0000002988 00000 n 0000003655 00000 n 0000004323 00000 n 0000004999 00000 n 0000005734 00000 n 0000005772 00000 n 0000006016 00000 n 0000006094 00000 n 0000006370 00000 n 0000006597 00000 n 0000006812 00000 n 0000007033 00000 n 0000010324 00000 n 0000012036 00000 n 0000013727 00000 n 0000015452 00000 n 0000017182 00000 n 0000018887 00000 n 0000019138 00000 n 0000019386 00000 n 0000019778 00000 n 0000020178 00000 n 0000021873 00000 n 0000024266 00000 n 0000040313 00000 n 0000042984 00000 n 0000043152 00000 n 0000043299 00000 n trailer <]>> startxref 0 %%EOF 2085 0 obj<>stream 5 d\MvO^=9sY<n|18Ucra8Lmlu0YD; JzMzzN@e4Extvp97 \~TUkY0Uuv($9Q@[ww+Xsv@HPKhd |LKErRDMLS"(4&39Vjhk0yy>&"N08fUN;}[^.bOxmpHK?vm6$EuM=a.5.Ixag<QD~'b98( .5V-GcY}+^`YR.d$C rv!$m endstream endobj 2083 0 obj<> endobj 2084 0 obj<> endobj 2086 0 obj<> endobj 2087 0 obj<>/Font<>/XObject<>/ProcSet[/PDF/Text/ImageB]/ExtGState<>>> endobj 2088 0 obj<> endobj 2089 0 obj<> endobj 2090 0 obj<> endobj 2091 0 obj<> endobj 2092 0 obj<> endobj 2093 0 obj[/ICCBased 2113 0 R] endobj 2094 0 obj<> endobj 2095 0 obj<> endobj 2096 0 obj<> endobj 2097 0 obj<> endobj 2098 0 obj<> endobj 2099 0 obj<> endobj 2100 0 obj<>stream z x6Yyv~Zl~+Ihof7i-\L ux]la:q:N5\bu; 3E+d)?H"k[ng+G!kK*2:j)A;0@1WurXOlnTCWMN`JP|9$K*o b)<TVeF 'T5*jlBjn|mGq\WD K(7i7*Mh[7qB"bp1&lZoiTBI*YWWq;oSGub k=O1RB9@8xvfQo^)% Zh8zjT2C< Qe'H $0~=!`Sju]7QSD6H#2Y$Yer& ;8:@68"M`^D#;,.d/*^Pw7 57`lY_<M#K?{8%Y'>jr}7+ $=<-3_U f\s@AmD/jLRz5 &pyyK&CGQ)8 Mw X>i$A8IvF$}{ HK(eKlK^bCnJa5xy.>KGz'eL#:ykLI0JG,!l$%r TMzq@h};Or/[KlZ<*dY/TC:0xZ5Q>SS,cP~v@4(|<|eF(vBR05 TX^"H[fWao0cU1X2K3Q$#B 476bm^$]IYm_6Qu))2H?}v x'-U~YL\?L[!\"ByK Cam}AP<SUsr+/T\D+/Z9{7)BIqQw>GYP[J[JC?m%{eQ 9vYdf=]mrx!&NyD Q(Gh}'f5a t Ff_/@3\f*{Z**BlNn{z[p,a=-lc dz-d$a-U?$tlpqK{t*&z[o%?4uOEc+0ViXjS/5*TuZ^d RR9)<{Q:qDINew;"rV,;.}iY;{?[*3s^=~%b_Hd[~6j;Rw``I [{b(U qxb}V)w:^!e2Aqa@/ee~\%E=-G +GoC7_4?z2EHwF|m4&eEFa^6UI|bT5o7M}$(bC*aN+iBqDs,JAUZE.Kzl*c>(1:pEwzn#|H-ce-TtrK8-A52%^$|uaTe#6yfzl>E_XBmby9??K%g\2&{Hl{dBlOR endstream endobj 2101 0 obj<>stream ^e[OU5 1xd pTaTCmX gXX_4;KnD+6p%LiNPf=digZT:f:Bc^:yVj/sdG?'4_k(h{fD9nr*K>~Of|}O*ZZaN!e_~je]IVa"av[ =~Ku53v%S 3dF[email protected].ZMr2yNl<gbx~#ODh7?5&~`|J|JH3BCjBJkU{68l(u 9IX(].{ =?h/V OTl/<jqWHm-_5qtGyvhC C[#C(NjNoV#PkBe@)8Sig_O:?3^8Kg8><oXE=7'g_gd"}74'i,GnxJ7qfT,NAwz-1X_KU_dVg6J=12A+wYs/ }&>qlD= F B&~O1fV;{|*T4xCB0b3c_ Y%ni@!Mr5.Z 8z3 h7K LR;YAB\{ K Wi"eHwTxd<\e:FpSF\, Ib;K:b9M\00{$(C"37CF>We %oA}s2syjDj:ru(7-ahD0_f*"okI3 =p9PvBjQ^A;P3 KlEj $46K.B#9aW>_ endstream endobj 2102 0 obj<>stream CV%D)4z+md_#[&F) 1^YL1F5>ame-$>Yx2W0M4Y3cc ohI(]XDhF)91>U*H>K}BiH6!N!2Q8vcwhGBsFHMlqd%HXa1#^( lq/jzw9yazBnJGv+t#^= p3$.-p?ni|\?,0 f^&>X7or~NE0A PzTKYfa_jqgV KN1mj+\8Z! H* infk*b.{ivMhT(NXF6CDw-d6 tn jiV\1>;@qdqIK[h,Q9 lEK&8JnELs7 ;|q:_Ec!P*/87PE|1Rnq\T=|_Hsh+S6obJ37F06y~k*?60Gy9_Z#uL:[v (kZZ1<Mn5UY*Gl,1Y} KQQE.!L~%SPp:jOU/d%!on48PdO7sooXsi#zTUC:PLle(F!FfW\H|{hmo05h= Z;/ *hH2':}EsW%#UR r.@#h3\-+}8M2&SK2gsA$8q `JJfPf'bML y4#zNn:\l ?\)^~7&;2=5J0x ]k xuYHR"c6x 2gu%l l(daw7\3 ?yV[c1y1-=%}8P4VJ&0-h7*<FQ$ Nl)*.`c s zD(;& F{]::m@3Au@MFam DfW`]8 ,(%02DuML%24diHt4>CR~l\/}ykg61c\74&N2pl# />N-J/43^^ =rI oWY3q@F70SA<}$bnlKp*^`EkB*+>stream k'1e?!IvqP>'3^| _ YAXf.g>16>!3Lp{M Kcdr@D A.*|[x^]_JZqA70C-|=?vZ0hlt`Fp @ DDp6[Z5

virtual.usalesiana.edu.bo

No debe confundirse con Lista. En ciencias de la computacin, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Una lista enlazada es un tipo de dato autorreferenciado porque contienen un puntero o enlace (en ingls link, del mismo significado) a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminacin de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto est previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: listas enlazadas simples, listas doblemente enlazadas, listas enlazadas circulares y listas enlazadas doblemente circulares. Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp, Scheme y Haskell tienen estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas. Historia[editar] Las listas enlazadas fueron desarrolladas en 1955-56 por Cliff Shaw y Herbert Simn en RAND Corporation, como la principal estructura de datos para su Lenguaje de Procesamiento de la Informacin (IPL). IPL fue usado por los autores para desarrollar varios programas relacionados con la inteligencia artificial, incluida la Mquina de la Teora General, el Solucionador de Problemas Generales, y un programa informtico de ajedrez. Se public en IRE Transactions on Information Theory en 1956, y en distintas conferencias entre 1957-1959, incluida Proceedings of the Western Joint Computer en 1957 y 1958, y en Information Processing (Procedentes de la primera conferencia internacional del procesamiento de la informacin de la Unesco) en 1959. El diagrama clsico actual, que consiste en bloques que representan nodos de la lista con flechas apuntando a los sucesivos nodos de la lista, apareci en Programming the Logic Theory Machine, de Newell y Shaw. Newell y Simn fueron reconocidos por el ACM Turing Award en 1975 por hacer contribuciones bsicas a la inteligencia artificial, a la psicologa del conocimiento humano y al procesamiento de las listas. El problema de los traductores del procesamiento natural del lenguaje condujo a Vctor Yngve del Instituto Tecnolgico de Massachusetts (MIT) a usar listas enlazadas como estructura de datos en su COMIT, lenguaje de programacin para computadoras, que investig en el campo de la Lingstica computacional. Un informe de este lenguaje, titulado A programming language for mechanical translation apareci en Mechanical Translation en 1958. LISP, el principal procesador de listas, fue creado en 1958. Una de las principales estructuras de datos de LISP es la lista enlazada. En torno a los 60, la utilidad de las listas enlazadas y los lenguajes que utilizaban estas estructuras como su principal representacin de datos estaba bien establecida. Bert Green, del Lincoln Laboratory del MIT, public un estudio titulado Computer languages for symbol manipulation en IRE Transaction on Human Factors in Electronics en marzo de 1961 que resuma las ventajas de las listas enlazadas. Un posterior artculo, A Comparison of list-processing computer languages de Bobrow y Raphael, apareca en Communications of the ACM en abril de 1964. Muchos sistemas operativos desarrollados por la empresa Technical Systems Consultants (originalmente de West Lafayette Indiana y despus de Raleigh, Carolina del Norte

es.wikipedia.org