Liste

Laborator
5.7/10 (3 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 11 în total
Cuvinte : 1597
Mărime: 9.06KB (arhivat)
Publicat de: Theodor Marginean
Puncte necesare: 0

Extras din laborator

3.1.1 Operatii fundamentale

/* Declaratii */

typedef int INFO; typedef int NODEPTR, LISTA, POZITIE, BOOL; typedef struct nod { INFO info; NODEPTR urm; } NOD; #ifndef GLOBAL

extern NOD *cursor_space;

#else

NOD *cursor_space;

#endif

void error(const char *s);

void init_cursor_space(int dim);

POZITIE cursor_alloc(void);

void cursor_free(const POZITIE p);

LISTA create_empty_list(INFO header);

LISTA create_list(INFO header);

BOOL is_empty(const LISTA l);

BOOL is_last(const POZITIE p);

POZITIE find(INFO x, LISTA l);

POZITIE find_pred(INFO x, LISTA l);

void insert_after(INFO x, POZITIE p);

void delete(INFO x, LISTA l);

void add_beg(INFO x, LISTA l);

void print_list(LISTA l);

Figura L1 Listst.h

/* Implementare */

#include <stdio.h> #include <alloc.h> #include <string.h> #include <stdlib.h> #include "listst.h" void error(const char *s) { fprintf(stderr, "n%sn", s); exit(1); } void init_cursor_space(int dim)

{ int i;

if((cursor_space=(NOD *)malloc(dim*sizeof(struct nod)))==NULL)

error("init_cursor_space: eroare malloc");

for(i=0; i<dim-1; i++)

cursor_space[i].urm=i+1;

cursor_space[dim-1].urm=0;

}

POZITIE cursor_alloc(void)

{ POZITIE p;

p=cursor_space[0].urm;

cursor_space[0].urm=cursor_space[p].urm;

return p;

}

void cursor_free(const POZITIE p)

{

cursor_space[p].urm=cursor_space[0].urm;

cursor_space[0].urm=p;

}

BOOL is_empty(const LISTA l)

{

return (cursor_space[l].urm==0);

}

BOOL is_last(const POZITIE p)

{

return (cursor_space[p].urm==0);

}

POZITIE find(INFO x, LISTA l)

{ POZITIE p;

p=cursor_space[l].urm;

while((p!=0) && (cursor_space[p].info!=x))

p=cursor_space[p].urm;

return p;

}

POZITIE find_pred(INFO x, LISTA l)

{ POZITIE p;

p=l;

l=cursor_space[l].urm;

while((cursor_space[p].urm!=0) && (cursor_space[l].info!=x)) {

p=l;

l=cursor_space[l].urm;

}

return p;

}

void insert_after(INFO x, POZITIE p)

{ NODEPTR nou=cursor_alloc();

if(nou==0) error("insert_after: eroare cursor_alloc");

else {

cursor_space[nou].info=x;

cursor_space[nou].urm=cursor_space[p].urm;

cursor_space[p].urm=nou;

}

}

void delete(INFO x, LISTA l)

{ POZITIE p, nou;

if(cursor_space[p=find_pred(x,l)].urm!=0){

nou=cursor_space[p].urm;

cursor_space[p].urm=cursor_space[nou].urm;

cursor_free(nou);

}

}

void del_list(LISTA l)

{ POZITIE p;

while(l!=0) {

p=cursor_space[l].urm;

cursor_free(l);

l=p;

}

}

void add_beg(INFO x, LISTA l)

{ POZITIE nou=cursor_alloc();

if(nou==0) error("add_beg: eroare in cursor_alloc");

cursor_space[nou].info=x;

cursor_space[nou].urm=cursor_space[l].urm;

cursor_space[l].urm=nou;

}

void print_list(LISTA l)

{

printf("nLISTA %d n",cursor_space[l].info);

l=cursor_space[l].urm;

while(l!=0){

printf("%3d --> ",cursor_space[l].info);

l=cursor_space[l].urm;

}

printf("NULLnn");

}

LISTA create_empty_list(INFO header)

{ POZITIE l=cursor_alloc();

if(l==0) error("create_empty_list: eroare cursor_alloc");

cursor_space[l].info=header;

cursor_space[l].urm=0;

return l;

}

LISTA create_list(INFO header)

{ POZITIE l;

INFO val;

int k;

char s[30];

l=create_empty_list(header);

printf("Introduceti elementele listei %2dn",header);

while(1) {

do {

printf("Element: "); gets(s);

if(strlen(s)==0) {return l;}

if((k=sscanf(s,"%d",&val))!=1) printf("Reintroduceti ultima valoare: ");

} while(k!=1);

add_beg(val, l);

}

}

Preview document

Liste - Pagina 1
Liste - Pagina 2
Liste - Pagina 3
Liste - Pagina 4
Liste - Pagina 5
Liste - Pagina 6
Liste - Pagina 7
Liste - Pagina 8
Liste - Pagina 9
Liste - Pagina 10
Liste - Pagina 11

Conținut arhivă zip

Alții au mai descărcat și

Proiectarea Algoritmilor

1. INTRODUCERE ÎN PROIECTAREA ALGORITMILOR 1.1. Definiţii Un algoritm este o metodă de rezolvare pas cu pas a problemelor. O problemă este...

Structuri de Date și Algoritmi

Curs 1 Structuri de date Structurile de date erau definite în limbajul C drept organizarea datelor primare. În limbajul C++, acestea reprezinta o...

Programarea Calculatoarelor

Lucrarea nr. 1 Determinarea experimentala a timpului de execuţie al unui program 1. Scopul lucrării - lucrarea prezintă aspecte legate de...

Algoritmi și Structuri de Date

ALGORITMI. METODE DE DESCRIERE A ALGORITMILOR 1.1 Scurt istoric În secolul al IX-lea d.Hr., un matematician persan, Abu Abdullah Muhammed bin...

Programarea Calculatoarelor

Task 1: Scrieti pseudocodul pentru a rezolva o ecuatie de grad doi cu coeficienti reali (tratati si cazul in care ecuatia are solutii complexe)....

Liste Dublu Înlănțuite Reprezentare cu Variabile Dinamice

/* Declaratii */ #ifndef LISTDINL_V1 #define LISTDINL_V1 #define INS_BEG 0 #define INS_END 1 #define ASC_ORD 2 #define DESC_ORD 3 #define NO_DUP...

Liste înlănțuite

1. SCOPUL LUCRARII In aceasta lucrare se vor studia structuri, vectori de structuri si liste simplu inlantuite. 2. BREVIAR TEORETIC 2.1....

Baze de Date

Clasif. utilizatorilor unor BD 1) utiliz. obisnuiti 2) utiliz. programatori de aplicatii 3) administrator de baza de date 4) administrator a...

Te-ar putea interesa și

Implementarea bazei de date a unui policlinici - listă dublu înlănțuită circulară

1. Introducere 1.1. Istoria bazelor de date Când vine vorba despre stocarea informaţiilor, pentru unii acest termen înseamnă o agenda veche în...

Diversitatea biologică și poluarea - lista roșie a specilor

Introducere Diversitatea biologică sau biodiversitatea este unul dintre termeni cheie în domeniul conservării incluzănd bogăţia vieţii şi...

Listă meniu a unui restaurant moldovenesc

CAPITOLUL I 1.1 Întocmirea şi redactarea listelor de preparate şi băuturi Cel mai adesea clientul îşi formeză prima impresie despre restaurant pe...

Protecționismul în viziunea lui Friedrich List

FRIEDRICH LIST ŞI PROTECŢIONISMUL ECONOMIC Cel supranumit,”Parintele protectionismului modern” Friedrich List (1789 1846),a fost un intelectual...

Listarea la Bursă și Efectul Său Asupra Prețului Acțiunilor

INTRODUCERE Orice investitor român sau străin poate să tranzacţioneze la bursă dar nu direct, ci numai prin intermediul unei societăţi de...

Liste liniare dublu înlănțuite

CAP. STRUCTURI DE DATE Structura de date este o notiune abstracta, caracterizata prin operatiile care se executa asupra ei, in timp ce tipul de...

Liste Liniare C++

I. ALOCAREA DINAMICA A MEMORIEI 1. VARIABILE DE TIP POINTER Def. MEMORIA interna poate fi privita ca o serie de octeti.Pentru a-i distinge...

Prezentare Alumil Rom Industry SA - listare la bursă

1. PREZENTAREA COMPANIEI ALUMIL ROM INDUSTRY S.A. este o filiala a companiei ALUMIL GROUP S.A., care este un grup industrial de nivel european...

Ai nevoie de altceva?