Anda di halaman 1dari 23

Colegiul Naional Spiru Haret, Trgu-Jiu

ATESTAT LA INFORMATIC

TITLUL LUCRRII:

LISTE SIMPLU NLNUITE

Profesor coordonator: Elev: Cojocaru Andreea-Laura

Flavius Boian Clasa a XII-a G

Trgu-Jiu
-2017-
CUPRINS

1. Argument................................................3

2. Notiuni teoretice.....................................4

3. Codul sursa HTML..................................7

4. Bibliografie...........................................25

2
Argument

Alegerea temei de atestat a fost motivata de dorinta mea de a imi satisface


curiozitatea despre acest subiect.In cercetarea mea voi incerca sa explic aceasta
tema cat mai explicit pentru a ii ajuta si pe cei care nu au abordat niciodata acest
subiect sa inteleaga ce inseamna si la ce se folosesc Listele simplu inlantuite.Pentru
a realiza acest lucru voi utiliza cateva cartisi culegeri de infomatica precum
Programarea in limbajul C/C++ pentru liceu de Emanuela Cerchez si Marinel
Serban,editura Polirom sau site-uri precum http:// ase.softmentor.ro
/StructuriDeDate /Fisiere/03 _ Liste Simple. Listele simplu inlantuite sunt structuri
de date dinamice omogene. Spre deosebire de masive, listele nu sunt alocate ca
blocuri omogene de memorie, ci ca elemente separate de memorie. Fiecare nod al
listei contine, in afara ce informatia utila, adresa urmatorului element. Aceasta
organizare permite numai acces secvential la elementele listei. Pentru accesarea
listei trebuie cunoscuta adresa primului element (numita capul listei); elementele
urmatoare sunt accesate parcurgand lista.
Dintre numeroasele aplicatii care se pot aplica asupra unei liste, amintim:
crearea listei;
afisarea elementelor listei;
inserarea unui element in lista(la inceputul, in interiorul sau la
sfarsitul listei);
stergerea unui element din lista(de la inceput, din interior sau de la
sfarsit);
accesarea unui element oarecare din lista;
cautarea unui element care indeplineste o anumita conditie;
Notiuni teoretice

3
1. Structura listei
Pentru a asigura un grad mai mare de generalitate listei a fost creat un alias
pentru datele utile (in cazul nostru un intreg): // Datele asociate unui // element
dintr-o lista typedef int Date; In cazul in care se doreste memorarea unui alt tip de
date, trebuie schimbata doar declaratia aliasului Date. Pentru memorarea listei se
foloseste o structura autoreferita. Acesta structura va avea forma: // Structura unui
element // dintr-o lista simplu inlantuita struct Element { // datele efective
memorate Date valoare; // legatura catre nodul urmator Element* urmator; }; In
cazul in care elemenul este ultimul din lista, pointerul urmator va avea valoarea
NULL. Declararea listei se face sub forma: // declarare lista vida Element* cap =
NULL;
2. Operatii cu liste
Principalele operatii cu liste sunt:
Parcurgere si afisare lista
Lista este parcursa pornind de la pointerul spre primul element si avansand
folosind pointerii din structura pana la sfarsitul listei (pointer NULL). // Parcurgere
si afisare lista simpla void Afisare(Element* cap) { // cat timp mai avem
elemente // in lista while (cap != NULL) { // afiseaza elementul curent cout <<
cap->valoare << endl; // avanseaza la elementul urmator cap = cap->urmator; } }
Inserare element
Inserarea unui element se poate face la inceputul sau la sfarsitul listei.
a) Inserare la inceput Acesta este cazul cel mai simplu: trebuie doar alocat
elementul, legat de primul element din lista si repozitionarea capului listei: //
Inserare element la inceputul unei // liste simplu inlantuite void
InserareInceput(Element* &cap, Date val) { // Alocare nod si initializare valoare
Element *elem = new Element; elem->valoare = val; // legare nod in lista elem-
>urmator = cap; // mutarea capului listei cap = elem; }
b) Inserare la sfarsitul listei In acest caz trebuie intai parcursa lista si dupa aceea
adaugat elementul si legat de restul listei. De asemenea, trebuie avut in vedere
cazul in care lista este vida. // Inserare element la sfarsitul unei // liste simplu
4
inlantuite void InserareSfarsit(Element* &cap, Date val) { // Alocare si initializare
nod Element *elem = new Element; elem->valoare = val; elem->urmator = NULL;
// daca avem lista vida if (cap == NULL) // doar modificam capul listei cap = elem;
else { // parcurgem lista pana la ultimul nod Element *nod = cap; while (nod-
>urmator != NULL) nod = nod->urmator; // adaugam elementul nou in lista nod-
>urmator = elem; } }
c) inserare dupa un element dat void InserareInterior(Element* &cap, Element* p,
Date val) { // Alocare si initializare nod Element *elem = new Element; elem-
>valoare = val; elem->urmator = NULL; // lista vida if (cap == NULL) { cap =
elem; return; } // inserare la inceputul listei if (cap == p) { elem->urmator = cap;
cap = elem; return; } // inserare in interior elem->urmator = p->urmator; p-
>urmator = elem; }
Cautare element
Cautarea unui element dintr-o lista presupune parcurgerea listei pentru
identificarea nodului in functie de un criteriu. Cele mai uzuale criterii sunt cele
legate de pozitia in cadrul listei si de informatiile utile continute de nod. Rezultatul
operatiei este adresa primului element gasit sau NULL.
a) Cautarea dupa pozitie Se avanseaza pointerul cu numarul de pozitii specificat: //
Cautare element dupa pozitie Element* CautarePozitie(Element* cap, int pozitie) {
int i = 0; // pozitia curenta // parcurge lista pana la // pozitia ceruta sau pana la //
sfarsitul listei while (cap != NULL && i < pozitie) { cap = cap->urmator; i++; } //
daca lista contine elementul if (i == pozitie) return cap; else return NULL; }
b) Cautarea dupa valoare Se parcurge lista pana la epuizarea acesteia sau
identificarea elementului: // Cautare element dupa valoare Element*
CautareValoare(Element* cap, Date val) { // parcurge lista pana la gasirea //
elementului sau epuizarea listei while (cap != NULL && cap->valoare != val) cap
= cap->urmator; return cap; }
Stergere element

5
a) Stergerea unui element din interiorul listei (diferit de capul listei) In acest caz
avem nevoie de adresa predecesorului elementului de sters. Se modifica legaturile
in sensul scurtcircuitarii elementului de sters, dupa care se elibereaza memoria
corespunzatoare elementului de sters: // sterge un element din interiorul listei //
primind ca parametru adresa predecesorului void
StergereElementInterior(Element* predecesor) { // salvam referinta la elementul de
sters Element* deSters = predecesor->urmator; // scurcircuitam elementul
predecesor->urmator = predecesor->urmator->urmator; // si il stergem delete
deSters; }
b) Stergerea unui element de pe o anumita pozitie Daca elementul este primul din
lista, atunci se modifica capul listei, altfel se cauta elemental si se sterge folosind
functia definite anterior: void StergerePozitie(Element* &cap, int pozitie) { // daca
lista e vida nu facem nimic if (cap == NULL) return; // daca este primul element,
atunci // il stergem si mutam capul if (pozitie == 0) { Element* deSters = cap; cap
= cap->urmator; delete deSters; return; } // daca este in interor, atunci folosim //
functia de stergere Element* predecesor = CautarePozitie(cap, pozitie-1);
StergereElementInterior(predecesor); } c) stergerea dupa o valoare Se cauta
predecesorul elementului si se foloseste functia de stergere element: void
StergereValoare(Element* &cap, Date val) { // daca lista e vida nu facem nimic if
(cap == NULL) return; // daca este primul element, atunci // il stergem si mutam
capul if (cap->valoare == val) { Element* deSters = cap; cap = cap->urmator;
delete deSters; return; } // cautam predecesorul Element* elem = cap; while (elem-
>urmator != NULL && elem->urmator->valoare != val) elem = elem->urmator; //
daca a fost gasit, atunci il stergem if (elem->urmator != NULL)
StergereElementInterior(elem); }

Codul sursa HTML

6
<!doctype html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Liste simplu inlantuite</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/custom.js"></script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js"></script>
<script type="text/javascript" src="script/highlight.pack.js" type="text/javascript"></script>
<link rel="stylesheet" href="style/vs.css" type="text/css">
<link rel="stylesheet" href="style/style.css" type="text/css" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-
scale=1.0" />
</head>

<body>
<section id="body" class="width">
<aside id="sidebar" class="column-left">
<header>
<h1><a href="#">Liste simplu inlantuite</a></h1>
</header>
<nav id="mainnav">
<ul>
<li class="selected-item"><a href="index.html">Definitie</a></li>
<li><a href="creare.html">Crearea si Afisarea</a></li>
<li><a href="inserare.html">Inserarea</a></li>
<li><a href="stergere.html">Stergerea unui element</a></li>
<li><a href="probleme.html">Probleme propuse</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</aside>

<section id="content" class="column-right">

<article>
7
<h2>Liste liniare simplu inlantuite</h2>

<p>O lista este <strong>o structura de date de tip secvential</strong>, alcatuita dintr-o
succesiune de elemente de acelasi tip, careia i se pot aplica o serie de operatii specifice.</p>
<p>Astfel, fiecare element cu exceptia primului, are un predecesor, si, de asemenea, fiecare
element cu exceptia ultimului are un succesor.</p>
<p><strong>Inlantuirea elementelor se poate face in doua moduri:</strong> </p>
<ul class="styledlist">
<li>elementele sunt memorate succesiv, unul dupa altul;</li>
<li>elementele sunt memorate aleator, in zone diferite de memorie, dar in acest caz fiecare
element este insotit de o asa-numita informatie de legatura, prin intermediul careia putem accesa
elementul urmator al listei.</li>
</ul>
<p><strong>Dintre numeroasele operatii care se pot aplica asupra unei liste, amintim:</strong>
</p>

<ul class="styledlist">
<li>crearea listei;</li>
<li>afisarea elementelor listei;</li>
<li>inserarea unui element in lista(la inceputul, in interiorul sau la sfarsitul listei);</li>
<li>stergerea unui element din lista(de la inceput, din interior sau de la sfarsit);</li>
<li>accesarea unui element oarecare din lista;</li>
<li>cautarea unui element care indeplineste o anumita conditie;</li>
<li>ordonarea elementelor listei dupa un anumit criteriu;</li>
</ul>

<p><strong>Lista simplu inlantuita poate fi reprezentata grafic astfel: </strong></p>


<a href="creare.html"><img src="media/liste.png"></a>
<p>Metodele prin care sunt implementate operatiile asupra listelor sunt urmatoarele:</p>
<h3>Tabel functii</h3>
<table>
<tr>
<th>Nume metoda</th>
8
<th>Tip returnat</th>
<th>Parametru</th>
</tr>
<tr>
<td><a href="creare.html">adaugare_nod</a></td>

<td>void</td>
<td>-</td>

</tr>
<tr>

<td><a href="creare.html">afisare</a></td>
<td>void</td>
<td>-</td>
</tr>
<tr>
<td><a href="inserare.html">inserare_inainte</a></td>
<td>void</td>
<td>int val</td>
</tr>
<tr>
<td><a href="inserare.html">inserare_dupa</a></td>
<td>void</td>
<td>int val</td>
</tr>
<tr>
<td><a href="stergere.html">stergere</a></td>
<td>void</td>
<td>int val</td>
</tr>

</table>

9
<p>Pentru o mai buna intelegere a listelor si operatiilor aplicate asupra acestora, se recomanda
vizionarea urmatorului tutorial:</p>
<iframe width="420" height="345" src="http://www.youtube.com/embed/NobHlGUjV3g">
</iframe>
<div>
<a href="contact.html" class="button button-reversed">Contact</a>
</div>
</article>
</section>
<div class="clear"></div>
</section>

</body>
<footer>
<p>Copyright &copy; 2017 Andreea Laura Cojocaru. All Rights Reserved.</p>
</footer>
</html>

Creare si Afisare HTML

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Liste simplu inlantuite</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/custom.js"></script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js"></script>
<script type="text/javascript" src="script/highlight.pack.js"
type="text/javascript"></script>
<link rel="stylesheet" href="style/vs.css" type="text/css">
<link rel="stylesheet" href="style/style.css" type="text/css" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-
scale=1.0" />
</head>

<body>

10
<section id="body" class="width">
<aside id="sidebar" class="column-left">
<header>
<h1><a href="#">Liste simplu inlantuite</a></h1>
</header>
<nav id="mainnav">
<ul>
<li><a href="index.html">Definitie</a></li>
<li class="selected-item"><a href="creare.html">Crearea si Afisarea</a></li>
<li><a href="inserare.html">Inserarea</a></li>
<li><a href="stergere.html">Stergerea unui element</a></li>
<li><a href="probleme.html">Probleme propuse</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</aside>

<section id="content" class="column-right">

<article>
<h2>Crearea si afisarea unei liste</h2>

<p>Urmatorul program ofera o modalitate de creare si afisare a unei liste liniare simplu
inlantuite care prelucreaza numere intregi:</p>
<textarea id="codeEditor" style="width: 100%; height 100%;" autocorrect="off"
autocapitalize="off" spellcheck="false">
#include&lt;iostream.h&gt;
#include&lt;conio.h&gt;

struct nod
{ int info;
nod *next;};

// acceseaza primul, respectiv ultimul nod


nod *p,*u ;
//numarul de noduri
int n;

//functia de creare si adaugare a unui nou element


void adaugare_nod()
11
{nod *c;
//daca lista este vida (p==0) se aloca primul nod
if(!p)
{p=new nod;
cout &lt;&lt; &quot;valoare primului nod ";
cin>>p->info;
//la creare primul si ultimul nod vor fi identice
u=p;
}
//altfel se adauga un nou element la sfarsit
else
{
//se aloca un nou nod
c=new nod;
cout &lt;&lt; &quot;informatia utila :";
//se completeaza campul informatie utila
cin>>c->info;
//se adauga dupa ultimul nod
u->next=c;
//se stabileste noul nod c ca fiind ultimul
u=c;
}
//campul adresa urmatoare a ultimului nod este 0
u->next=0;
}

//functia pentru afisarea unei liste


void afisare()
{nod *c;
//se porneste de la primul nod din lista
c=p;
//cat timp c retine o adresa nenula
while(c)
{
//se afiseza campul informatie utila
cout &lt;&lt;c->info&lt;&lt;" ";
//se avanseaza la urmatoarea adresa, la urmatorul nod
c=c->next;}
cout &lt;&lt;endl;
}

void main()
12
{clrscr();
int b;
cout &lt;&lt; &quot;n=";
cin>>n;
for(int i=1;i&lt;=n;i++)
adaugare_nod( );
cout &lt;&lt;endl;
afisare();
getch();
}
</textarea>
<a href="contact.html" class="button button-reversed">Contact</a>
</article>
</section>
<div class="clear"></div>
</section>
<footer>
<p>Copyright &copy; 2017 Andreea-Laura Cojocaru. All Rights Reserved.</p>
</footer>
</body>

</html>

Inserare HTML

<!doctype html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Inserarea Elementelor</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/custom.js"></script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js"></script>
<script type="text/javascript" src="script/highlight.pack.js" type="text/javascript"></script>
13
<link rel="stylesheet" href="style/vs.css" type="text/css">
<link rel="stylesheet" href="style/style.css" type="text/css" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-
scale=1.0" />
</head>

<body>
<section id="body" class="width">
<aside id="sidebar" class="column-left">
<header>
<h1><a href="#">Liste simplu inlantuite</a></h1>
</header>
<nav id="mainnav">
<ul>
<li><a href="index.html">Definitie</a></li>
<li><a href="creare.html">Crearea si Afisarea</a></li>
<li class="selected-item"><a href="inserare.html">Inserarea</a></li>
<li><a href="stergere.html">Stergerea unui element</a></li>
<li><a href="probleme.html">Probleme propuse</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</aside>

<section id="content" class="column-right">

<article>
<h2>Inserarea unui element intr-o lista</h2>
<p> Inserarea unui element nou in lista se poate face inainte sau dupa un nod care retine o
valoare data (continut util). Evident s-ar putea realiza si inserare pe o pozitie data astfel incat
toate elemantele de la acea pozitie incepand se vor deplasa mai la "dreapta".</p>
<h3>A. Inserarea unui element dupa un nod</h3>
<p>In cazul in care inserarea se face "dupa" se avanseaza cu un nod intermediar c in lista pana la
nodul dupa care se va face inserarea, se creaza un nou nod (nodul a) apoi se genereaza legaturile:
mai intai de la a la c->next apoi de la c la a. Exista posibilitatea ca ultimul nod sa retina valoarea
dupa care se realizeaza inserarea caz in care se modifica ultimul.</p>
<textarea id="codeEditor" style="width: 100%; height 100%;" autocorrect="off"
autocapitalize="off" spellcheck="false">

void inserare_dupa(int val)


{nod *c,*a;
/*nod *a retine adresa nodului ce se va insera in lista

14
cu *c se face avansarea in lista pana la nodul ce contine
valoarea dupa care se face inserarea;
evident se porneste de la primul; */
c=p;
while(c->info!=val &amp;&amp;c)
c=c->next;
a=new nod;
cout &lt;&lt; &quot;valoarea de inserat &quot;;
cin>>a->info;
a->next=c->next;
c->next=a;
//pentru ca exista si posibilitatea ca valoarea
//dupa care se face inserarea sa fie retinuta de ultimul element
if(c==u)
u=a;
}
</textarea>
<img src="media/image002.jpg">
<h3>B. Inserarea unui element inaintea unui nod</h3>
<p>In cazul in care inserarea se face "inainte" se avanseaza cu un nod intermediar c in lista pana
la un nod situat inaintea celui cautat , se creaza un nou nod (nodul a) apoi se genereaza
legaturile: mai intai de la a la c->next apoi de la c la a. Exista posibilitatea ca primul nod sa
retina valoarea inainte de care se realizeaza inserarea caz in care se modifica primul.</p>
<textarea id="codeEditor" style="width: 100%; height 100%;" autocorrect="off"
autocapitalize="off" spellcheck="false">

void inserare_inainte(int val)


{nod *c,*a;
//Nod *a retine adresa nodului ce se va insera in lista;
//cu *c se face avansarea in lista;
//evident se porneste de la primul;
c=p;
//pentru ca exista si posibilitatea
ca valoarea inainte de care se face inserarea
// sa fie retinuta de primul nod se va face un test
//in caz afirmativ se va stabili un nou prim element
if(p->info==val)
{c=new nod;
cout &lt;&lt; &quot;valoare de inserat ";
cin>>c->info;
c->next=p;
p=c;}
15
else
//c se pozitioneaza inainte de elementul cautat
{while(c->next->info!=val &amp;&amp;c)
c=c->next;
a=new nod;
cout &lt;&lt; &quot;valoarea de inserat ";
cin>>a->info;
a->next=c->next;
c->next=a;}
}
</textarea>
<img src="media/image004.jpg">
</article>
</section>
<div class="clear"></div>
</section>
<footer>
<p>Copyright &copy; 2017 Andreea-Laura Cojocaru. All Rights Reserved.</p>
</footer>
</body>

</html>

Stergerea unui element HTML

<!doctype html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Liste simplu inlantuite</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/custom.js"></script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js"></script>
<script type="text/javascript" src="script/highlight.pack.js" type="text/javascript"></script>
<link rel="stylesheet" href="style/vs.css" type="text/css">
<link rel="stylesheet" href="style/style.css" type="text/css" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-

16
scale=1.0" />
</head>

<body>
<section id="body" class="width">
<aside id="sidebar" class="column-left">
<header>
<h1><a href="#">Liste simplu inlantuite</a></h1>
</header>
<nav id="mainnav">
<ul>
<li><a href="index.html">Definitie</a></li>
<li><a href="creare.html">Crearea si Afisarea</a></li>
<li><a href="inserare.html">Inserarea</a></li>
<li class="selected-item"><a href="stergere.html">Stergerea unui element</a></li>
<li><a href="probleme.html">Probleme propuse</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</aside>

<section id="content" class="column-right">

<article>
<h2>Stergerea unui element dintr-o lista</h2>

<p> In cazul in care se realizeaza stergerea se avanseaza cu un nod intermediar c in lista pana la
un nod situat inaintea celui cautat (nodul de sters), se genereaza noule legaturi intre precedentul
si urmatorul nodului de sters, se elibereaza spatiul de memorie.</p>

<textarea id="codeEditor" style="width: 100%; height 100%;" autocorrect="off"


autocapitalize="off" spellcheck="false">
void stergere(int val)
{
//a se sterge, c este precedentul sau
//Se va genera o noua //legatura intre c si a->next
nod *c,*a;
c=p;
//daca primul nod retine val se sterge primul
if(p->info==val)
{a=p;
//primul va deveni urmatorul element
17
p=p->next;
delete a;} //se elibereaza memoria
else
{while(c->next->info!=val&amp;&amp;c)
//se pozitioneaza pe elementul ce urmeaza a fi sters
c=c->next;
a=c->next;
c->next=a->next;
if(a==u)
ultim=c;// se elibereaza memoria
delete a;}
}

</textarea>
<a href="contact.html" class="button button-reversed">Contact</a>

</article>
</section>
<div class="clear"></div>
</section>
</body>
<footer>
<p>Copyright &copy; 2017 Andreea-Laura Cojocaru. All Rights Reserved.</p>
</footer>
</html>

Probleme HTML

<!doctype html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Liste simplu inlantuite</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/custom.js"></script>
<script type="text/javascript"

18
src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js"></script>
<script type="text/javascript" src="script/highlight.pack.js" type="text/javascript"></script>
<link rel="stylesheet" href="style/vs.css" type="text/css">
<link rel="stylesheet" href="style/style.css" type="text/css" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-
scale=1.0" />
</head>

<body>
<section id="body" class="width">
<aside id="sidebar" class="column-left">
<header>
<h1><a href="#">Liste simplu inlantuite</a></h1>
</header>
<nav id="mainnav">
<ul>
<li><a href="index.html">Definitie</a></li>
<li><a href="creare.html">Crearea si Afisarea</a></li>
<li><a href="inserare.html">Inserarea</a></li>
<li><a href="stergere.html">Stergerea unui element</a></li>
<li class="selected-item"><a href="probleme.html">Probleme propuse</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</aside>

<section id="content" class="column-right">

<article>
<h2>Probleme propuse</h2><img src="media/probleme.png" align="right" >
<ol type="1">
<li>Fie o lista de numere intregi. Sa se insereze dupa oricare valoare 3 valoarea 4</li>
<li>Fie o lista de numere reale. Sa se insereze intre oricare doua valori media aritmetica a
elementelor alaturate.</li>
<li>O lista contine titlul si autorul unei carti, precum si editura.
<ul>
<li>Sa se stearga cartile cu titlul "Poezii". Afisati continutul listei.</li>
<li>Sa se insereze un nou volum in lista: "Rascoala-Rebreanu-All" dupa "Ion-Rebreanu-All".
Afisati continutul listei.</li>
<li>Sa se insereze un nou volum in lista "Padurea spanzuratilor-Rebreanu-All" inainte de
"Rascoala-Rebreanu-All". Afisati continutul listei.</li>
</ul>
19
</li>
<li>Sa se stearga elementele egale cu x dintr-o lista. <a
href="solutie.html"><b>Solutie</b></a></li>
<li>Sa se stearga elementul minim dintr-o lista</li>
<li>Sa se elimine elementele (elementul) din mijlocul unei liste</li>
<li>Sa se genereze o lista care contine numele unor persoane astfel incat sa fie ordonata</li>

</ol>
<a href="contact.html" class="button button-reversed">Contact</a>
</article>
</section>
<div class="clear"></div>
</section>
<footer>
<p>Copyright &copy; 2017 Andreea-Laura Cojocaru. All Rights Reserved.</p>
</footer>
</body>

</html>

Contact HTML

<!doctype html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Liste simplu inlantuite</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/custom.js"></script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js"></script>
<script type="text/javascript" src="script/highlight.pack.js" type="text/javascript"></script>
<link rel="stylesheet" href="style/vs.css" type="text/css">
<link rel="stylesheet" href="style/style.css" type="text/css" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-
scale=1.0" />
</head>
20
<body>
<section id="body" class="width">
<aside id="sidebar" class="column-left">
<header>
<h1><a href="#">Liste simplu inlantuite</a></h1>
</header>
<nav id="mainnav">
<ul>
<li><a href="index.html">Definitie</a></li>
<li><a href="creare.html">Crearea si Afisarea</a></li>
<li><a href="inserare.html">Inserarea</a></li>
<li><a href="stergere.html">Stergerea unui element</a></li>
<li><a href="probleme.html">Probleme propuse</a></li>
<li class="selected-item"><a href="contact.html">Contact</a></li>
</ul>
</nav>
</aside>

<section id="content" class="column-right">

<article>
<h2>Contact</h2>
<div id="site_content">

<div class="contact_div">
<ul style="list-style-type:circle">
<li><font size="5"><b>Titlu:</b> <em>Liste simplu inlantuite</em></font></li>
<li><font size="5"><b>Nume si prenume:</b> <em>Cojocaru Andreea-
Laura</em></font></li>
<li><font size="5"><b>Clasa: </b><em>a XII-a G</em></font></li>
<li><font size="5"><b>Profesor coordonator: </b><em>Flavius Boian</em></font></li>
</ul>
</div>
<div id="contact_div">
<h3>Bibliografie</h3>
<ul type="square">
<li><b>Programarea in limbajul C/C++ pentru liceu de Emanuela Cerchez si Marinel
Serban,editura Polirom
<li><b>http:// ase.softmentor.ro /StructuriDeDate /Fisiere/03 _ Liste Simple
<li><b>Sabin Buraga - Proiectare situri Web: design si functionalitate, Editura Polirom
</ul>
21
</div>
</div>

</article>
</section>
<div class="clear"></div>
</section>
<footer>
<p>Copyright &copy; 2017 Andreea-Laura Cojocaru. All Rights Reserved.</p>
</footer>
</body>

</html>

Bibliografie:

22
1. Teodoru Gugoiu: HTML, XHTML, CSS si XML prin exemple, editura
Teora
2. http://www.runceanu.ro/adrian/wp-content/cursuri/S2progr2012/curs8-
PC2.pdf
3. Programarea in limbajul C/C++ pentru liceu de Emanuela Cerchez si
Marinel Serban,editura Polirom
4. Sabin Buraga - Proiectare situri Web: design si functionalitate, Editura
Polirom

23

Anda mungkin juga menyukai