• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Liste simplu si dublu inlantuite, liniare si circulare

15
  • Publicat de Andrei Avădănei
  • în C/C++
  • — 14 iul., 2009 at 3:30 pm

O lista inlantuita este o structura de date in care obiectele sunt aranjate intr-o anumita ordine.Spre deosebire de un tablou, in care ordinea este determinata de indicii tabloului ,ordinea intr-o lista inlantuita este determinata de un pointer continut in fiecare obiect.Listele inlantuite asigura o reprezentare mai simpla si mai flexibila pentru multimi dinamice, suportand toate operatiile clasice : adauga element,elimina element,cauta element etc nu neaparat eficient.

O lista poate avea una din urmatoarele forme .Ea poate fi simplu inlantuita sau dublu inlantuita,poate fi sortata sau nu si poate fi liniara sau circulara.
O lista dublu inlantuita este caracterizata din 3 campuri :

  • back – referinta catre elementul anterior din lista
  • value – valoarea elementului (cheie) de la pozitia curenta in lista
  • next – referinta catre urmatorul element din lista

Unei liste simplu inlantuite i se omite referinta catre elementul anterior(back).Astfel putem spune ca avem informatii referitoare doar la urmatorul element,informatiile catre anteriorul lipsind.

Daca o lista este sortata crescator elementul din capul listei este elementul minim iar elementul maxim ultimul din lista.Daca o lista este nesortata cheile pot avea diferite valoare,nerespectand o ordine crescatoare sau descrescatoare.

O lista simplu inlantuita este liniara daca ultimul element din lista are referinta nula catre urmatorul element.O lista dublu inlantuita este liniara daca primul element are referinta nula catre elementul precedent iar ultimul element din lista are referinta nula catre urmatorul element din lista.

O lista simplu inlantuita este circulara daca ultimul element din lista pointeaza catre primul din lista.O lista dublu inlantuita este circulara daca primul element din lista pointeaza catre ultimul element din lista iar ultimul element din lista are referinta catre primul. Cred ca ati inteles principiile ce stau la baza nu? 😀

Mai jos avem 2 surse explicate ce reprezinta sursele unor liste dublu inlantuite liniara si circulare nesortate cu majoritatea operatiilor de baza.Ca tema trebuie sa faceti lista simplu inlantuita circulara si liniara (este foarte simplu).

Lista liniara dublu inlantuita
Lista circulara dublu inlantuita

Tema :
1. (Problema lui Joseph) Se considera n persoane aranjate in cerc. Incepand cu o pozitie
particulara p0 se efectueaza numararea persoanelor si, in mod brutal se executa fiecare
cea de-a m-a persoana; cand este executata o persoana, cercul se inchide dupa eliminarea
aceateia. Executia se termina cand ramane o singura persoana; aceasta va ramane in viata.
– Sa scrie o procedura (un modul) care afiseaza persoanele in ordinea in care au fost
executate ;
– Presupunand ca se doreste salvarea unei anume persoane, sa se construiasca un modul
care sa determine pozitia p0 astefel incat, daca numaratoarea incepe cu i0, atunci
persoana salvata sa fie cea dorita.
– Sa se scrie un program C (C++) care sa testeze cele doua module.

2.Se citeste de la intrare un sir de numere intregi.
a) Sa se plaseze numerele citite intr-o lista dublu inlantuita, prin inserari repetate in fata
listei.
b) Sa se afiseze lista creata in ordinea inversa citirii numerelor.
c) Sa se insereze un numar citit de la intrare in fata unei pozitii citite de la intrare.
d) Se se stearga un element aflat in fata unei pozitii citita de la intrare.

Etichete: lista circularalista dublu inlantuitalista liniaralista nesortatalista simplu inlantuitalista sortata

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior Free Office
  • Articolul următor Problema banda

15 Comentarii

  1. dany spune:
    aprilie 18, 2010 la 9:12 am

    In fisierul lista.txt se gaseste un sir de numere intregi scrise toate pe un singur rand,separate prin spatiu.Nu se cunoaste cate nr sunt in fisier.
    Sa se creeze llsi cu nr din fisier apoi sa se afiseze cel mai mare dintre aceste numere.Help me pls:(

    • Avadanei Andrei spune:
      aprilie 18, 2010 la 10:43 am

      Dany sa fie clar ca noi nu facem temele, doar iti dau sfaturi
      Pentru a citi pana cand ramai fara numere si a determina maximul :

      max = -(1<<20);
      while(scanf("%d",&n) != -1)
      {
       adauga_in_lista(n);
       if(max<n ) max=n;
      }
      

      Referitor la listele inlantuite, ai articolul in fata, ce mai vrei? 🙂

  2. dany spune:
    aprilie 18, 2010 la 4:37 pm

    ms mult de ajutor dar eu vreau toata pb

  3. dany spune:
    aprilie 18, 2010 la 4:39 pm

    nu se poate?:D

    • Avadanei Andrei spune:
      aprilie 18, 2010 la 5:50 pm

      Nu, imi pare rau. 🙂

  4. dany spune:
    aprilie 18, 2010 la 8:50 pm

    deci oricand am nevoie de ajutor ma ajuti?
    doar sa ma ajuti nu sami spui cum se face:P

  5. Dj D spune:
    ianuarie 18, 2011 la 4:30 pm

    Salut!!!
    Zimi te rog cum se rezolva urmatarea problema :
    De la tastatura se citeste un text t. Caracterele acestuia sunt iinserate (in ordinea in care apar in text )intr-o lista liniara. Sa se insereze in lista caracterul”>” inaintea fiecarei vocale din lista . Afisati Inainte si dupa

  6. Andrei Avădănei spune:
    ianuarie 18, 2011 la 4:46 pm

    Nu rezolvam probleme, doar dam indicatii dar pe forum.

  7. Dj D spune:
    ianuarie 18, 2011 la 4:48 pm

    Astept indicatiile …….

  8. Condurache Bogdan spune:
    ianuarie 18, 2011 la 7:12 pm

    Nu vad ca tu sa fi pus o intrebare pe forum. Daca ai pus, inseamna ca nu am vazut-o, dar daca n-ai pus, n-ar fi normal sa pui prima data intrebarea? 😀

  9. hello:) spune:
    octombrie 16, 2011 la 8:32 pm

    hi there! am o probl d genu: sa se creeze o lista circulara simplu inlatuita din care sa se stearga nr negative..
    vreau o mica idee..pls:)

  10. wide spune:
    decembrie 13, 2011 la 6:03 pm

    eu vreau doar indicatie:)
    Se creeaza o lista in care ordina de acces este inversa celei in care sunt citite numerele bla bla bla.
    cum pot sa parcurg lista de la coada la cap?

  11. wide spune:
    decembrie 14, 2011 la 12:16 am

    miam dat seama dar mersi oricum 😉

  12. suzi spune:
    martie 21, 2013 la 3:28 pm

    citirea listelor circulare simplu inlantuire se face la fel ca la listele liniare simplu inlantuire?

    • Andrei Avădănei spune:
      martie 21, 2013 la 4:20 pm

      Aproape la fel. Trebuie doar sa link-uiesti primul cu ultimul element mereu.


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • februarie 2023
    L Ma Mi J V S D
     12345
    6789101112
    13141516171819
    20212223242526
    2728  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • C/C++
  • Liste simplu si dublu inlantuite, liniare si circulare
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons