Implementarea listelor simplu inlantuite

Slides:



Advertisements
Similar presentations
Criterii de divizibilitate
Advertisements

În general exist ă 2 forme mari de conservare : “in situ” şi “ex situ” 1. Conservarea “ in situ” Aceast ă metod ă de conservare const ă în.
2009 Pag Pag. 2 Agenda 1.Obiectivul proiectului 2.Parteneri 3.Autentificare versus identificare 4.Schema generala 5.Probleme de rezolvat / rezolvate.
Date spatiale. Continut - GIS notiuni Definitie Data si informatie Baze de date relationale (RDBMS) Baze de date spatiale (geo-spatial databases) - Modele.
1 const #define DIMENSIUNE 1000 const int DIMENSIUNE = 1000; Utilizarea valorilor constante este importantă, de exemplu, în declararea tablourilor de date.
Parcurgerea grafurilor neorientate Inseamna vizitare nodurilor in vederea prelucrarii informatiilor din fiecare nod. Exista doua moduri de a parcurge un.
POSTA ELECTRONICA Ana-Maria Tache Ioana Cristina Ciufu.
SECURITATEA ÎN REŢELELE TCP/IP
Bazele retelelor TCP/IP
Februarie 2018 ASE Bucuresti
ACTIVITATEA 1 -,, PROFESOR IT LA PAPI’’
Subinterogări multiple
Oracle Academy Lead Adjunct
Circuitul electric Curentul electric
Funcţii Excel definite de utilizator (FDU) în VBA
Placa de bază.
Structura unui calculator
Căutarea şi regăsirea informaţiei.
SOFTWARE Tipuri de software.
Dispozitive de stocare
CONFIGURAREA SWITCHURILOR
Programare și securitate la nivelul arhitecturii x86
Arhitectura serviciilor web
Căutarea şi regăsirea informaţiei.
Paxos Made Simple Autor: Puşcaş Radu George
Date Semistructurate, C12. Oracle / OR (2) Date Semistructurate,
Retele de calculatoare
7 Memoria virtuală 28 martie aprilie 2011
CARBONUL.
Date Semistructurate, C06. XSLT Date Semistructurate,
Cursul 3 Cautare peste siruri problema cautarea naiva
WebSite Social Tema 2 WebSite Social.
Tipuri structurate Tipul tablou
SUBNETAREA.
Inteligenta Artificiala
Mase Plastice Capet Vasile Daniel.
Curs 6: Introducere în programarea SAS
Aplicatii Practice ale Microcontrolelor
Algoritm de crawling optimizat pe similaritate în documente HTML
Formatarea paragrafului
Funcții C/C++ continuare
prof. mrd. Negrilescu Nicolae Colegiul National Vlaicu Voda
TCP/IP peste retele ATM
TEMA 3 TRANZISTORUL BIPOLAR
Medii informatice utilizate pentru proiectare
Microsoft Office Word Lucrul cu documente mari
Crearea si gazduirea serviciilor
INTERNET SERVICII INTERNET.
Mic ghid pentru crearea unei prezentari PowerPoint
PRELUCRARI SPECIFICE TABLOURILOR BIDIMENSIONALE
Forms (Formulare).
IPv6.
A great way to create a channel of communication
SUBSTANTE PURE SI AMESTECURI DE SUBSTANTE
Functia de documentare
SOAP -Simple Object Access Protocol-
SALONIC 29 MARTIE - 4 APRILIE 2016
Sisteme de recomandare
Microsoft Office Word Lucrul cu documente mari
ARBORI BINARI DE CĂUTARE
Programarea in limbajul Java 2004 Lecturer: Gavrila Cristian
Realizarea prezentarilor cu Microsoft PowerPoint
Crearea unei aplicatii Windows Forms simple
Sistemul de control intern managerial
Refracţia luminii.
Microsoft PowerPoint.
Despre lamaie.net De ce sunt lamaile acre? Realizatori: Cristina Cazan
Tabele WEB.
Siruri de caractere.
ALGORITMI ŞI SCHEME LOGICE
Presentation transcript:

Implementarea listelor simplu inlantuite

Continut Metode de implementare Declararea unei liste Clasificarea listelor Algoritmi pentru prelucrarea listelor simplu inlantuite

Metode de implementare LISTA – structura de date logica, liniara, cu date omogene, in care fiecare element are un succesor si un predecesor, exceptand primul element, care nu are decat succesor si ultimul element care nu are decat predecesor. Implementarea listelor: a) in functie de modul de alocare a memoriei interne: - implementare statica (folosind vectori) - implementare dinamica (folosind pointeri) b) in functie de modul de aranjare a elementelor listei: - secventiala – numai statica - inlantuita – statica si dinamica

Implementarea prin alocare inlantuita Nodurile sunt aranjate aleatoriu in memorie. Necesita un mecanism prin care sa se precizeze ordinea reala a nodurilor adica: - pozitia primului nod (prim) - pozitia ultimului nod (ultim) - succesorul fiecarui nod (urm) Metoda folosita este ca un nod al listei sa contina doua tipuri de informatii: - informatia propriu-zisa - informatia de legatura – adresa urmatorului nod.

Clasificarea Listelor

Clasificarea listelor

Declararea listei const unsigned NMAX=100; typedef unsigned adresa; struct nod {<tip_1> <info_11>,<info_12>,…..,<info_1n>; ………………………………. <tip_m> <info_m1>,<info_m2>,…..,<info_mn>; adresa urm;}; nod lista [NMAX+1];

Algoritmi pentru prelucrarea listelor Operatii: Initializarea Crearea Inserarea unui element Eliminarea unui element Parcurgerea Cautarea unui element Concatenarea Divizarea

Algoritmi pentru prelucrarea listelor Se considera ca un nod al listei contine numai un camp cu informatie si campul pentru realizarea legaturii: const unsigned NMAX=100; unde: typedef unsigned adresa; prim – adresa primului nod ultim – adresa ultimului nod struct nod p – adresa nodului curent {int info; n – valoarea atribuita campului info adresa urm;}; nr_el – lungimea listei nod lista [NMAX+1]; liber – vector harta a nodurilor - liber [p] are valoarea 1 daca adresa prim, ultim, p; nodul p este liber si 0 daca unsigned nr_el, liber[NMAX]; este ocupat int n;

Algoritmi pentru prelucrarea listelor Testarea listei: a)Lista vida int este_vida (adresa prim ) { return prim = = NULL; } b)Lista plina int este_plina ( ) { return nr_el = = NMAX; }

Algoritmi pentru prelucrarea listelor Initializarea listei: se creeaza lista vida void init ( adresa &prim, adresa &ultim ) { ultim = prim = NULL; nr_el = 0; for ( p = 1; p < = NMAX; p ++ ) liber [ p ] = 1; }

Algoritmi pentru prelucrarea listelor Alocarea memoriei: se gaseste prima pozitie libera si se aloca memorie pentru noul nod. adresa aloc_mem ( ) { for ( p = 1; ! liber [ p ]; p ++ ) ; liber [ p ] = 0 ; nr_el ++; }

Algoritmi pentru prelucrarea listelor Adaugarea primului nod: void adaug_prim ( adresa &prim, adresa &ultim, int n ) { prim = aloc_mem ( ); lista [ prim ] . info = n; lista [ prim ] .urm = NULL; ultim = prim; }

Algoritmi pentru prelucrarea listelor Adaugarea dupa ultimul nod: void adaug_dupa_ultim ( adresa &prim, adresa &ultim, int n ) { p = aloc_mem ( ); lista [ p ] . info = n; lista [ p ] .urm = NULL; lista [ultim ].urm = p; if (este_vida ( prim )) prim = p; ultim = p; }

Algoritmi pentru prelucrarea listelor Adaugarea in fata primului nod: void adaug_inainte_prim ( adresa &prim, adresa &ultim, int n ) { p = aloc_mem ( ); lista [ p ] . info = n; lista [ p ] .urm = prim; if (este_vida ( prim )) ultim = p; prim = p; }

Algoritmi pentru prelucrarea listelor Adaugarea in interiorul liste: a) Dupa nodul q void adaug_dupa ( adresa q, adresa &ultim, int n ) { p = aloc_mem ( ); lista [ p ] . info = n; lista [ p ] .urm = lista [ q ].urm; lista [ q ] .urm = p; if ( lista [ p ] .urm = = NULL ) ultim = p; }

Algoritmi pentru prelucrarea listelor Adaugarea in interiorul liste: b) Inainte de nodul q void adaug_in_fata ( adresa q, adresa &ultim, int n ) { p = aloc_mem ( ); lista [ p ] . info = lista [ q ] . info; lista [ q ] . info = n; lista [ p ] .urm = lista [ q ].urm; lista [ q ] .urm = p; if ( lista [ p ] .urm = = NULL ) ultim = p; }

Algoritmi pentru prelucrarea listelor Parcurgerea listei: void parcurge ( adresa prim ) { for ( p = prim; p ! = NULL; p = lista [ p ] . urm ) // se prelucreaza lista [ p ] . info;