Sunteți pe pagina 1din 2

1: //Liste secventiale

2: #include <iostream>//pt cout


3: #include <stdlib.h>
4:
5: #define NMAX 10
6:
7: using namespace std;//pt scrierea prescurtata, fara std::cout, etc
8:
9: typedef int info;
10:
11: typedef struct{
12: info informatie;
13: int pozitieUrmatorulElement;
14: } element;
15:
16: int elementCurent = 0;
17:
18: void listaInitializare(element *lista);
19:
20: void listaAfisare(element *lista);
21:
22: void elementNou(element *lista, info informatie);
23:
24: void listaSecventialaDinVector(element *lista, info *tablou, int
dimensiuneTablou);
25:
26: void stergeElementPozitiaData(element *lista, int pozitie);
27:
28: int main(){
29:
30: info tablou[NMAX] = {1, -2, 3, 4, -5};
31: element lista[NMAX];
32: cout << "Lista neinitializata" << endl;
33: listaAfisare(lista);
34:
35: cout << "Lista initializata" << endl;
36: listaInitializare(lista);
37: listaAfisare(lista);
38:
39: cout << "Lista incarcata din vector" << endl;
40: listaSecventialaDinVector(lista, tablou, NMAX);
41: listaAfisare(lista);
42:
43: cout << "Sterge al doilea element" << endl;
44: stergeElementPozitiaData(lista, 2);
45: listaAfisare(lista);
46:
47: cout << "Adauga 13 pe pozitia eliberata" << endl;
48: elementNou(lista,13);
49: listaAfisare(lista);
50:
51: cout << "Sterge elementul 13" << endl;
52: stergeElementPozitiaData(lista, NMAX-1);
53: listaAfisare(lista);
54:
55:
56:
57: system("PAUSE");//in stdlib
58: return 0;
59: }
60:
61: void listaInitializare(element *lista)
62: {
63: for(int i=0; i<NMAX-1; i++) lista[i].pozitieUrmatorulElement = i+1;
64: lista[NMAX-1].pozitieUrmatorulElement = -1;
65: }
66:
67:
68: void listaAfisare(element *lista){
69: for(int i = 0; i < NMAX; i++) cout << lista[i].informatie << "\t";
70: cout << endl;
71: for(int i = 0; i < NMAX; i++) cout << lista[i].pozitieUrmatorulElement <<
"\t";
72: cout << endl << endl;
73: }
74:
75: void elementNou(element *lista, info informatie){
76: int q;
77: if (elementCurent < 0) {
78: cout << "nu mai exista loc in lista";
79: return;
80: }
81: q = elementCurent;
82: elementCurent = lista[q].pozitieUrmatorulElement;
83: lista[q].informatie = informatie;
84: }
85:
86: void listaSecventialaDinVector(element *lista, info *tablou, int
dimensiuneTablou){
87: int i = 0;
88: if (dimensiuneTablou > 0)
89: while(dimensiuneTablou--) elementNou(lista, tablou[i++]);
90: }
91:
92: void stergeElementPozitiaData(element *lista, int pozitie){
93: if ((pozitie < -1) || (pozitie >= NMAX)) {
94: cout << "Depasire gama index" << endl;
95: return;
96: }
97:
98: if (pozitie == NMAX-1){
99: lista[NMAX-1].informatie = 0;
100: elementCurent = NMAX-1;
101: }
102:
103:
104: while(((elementCurent != -1) && (pozitie < (elementCurent-1)))||
((elementCurent == -1)&&((pozitie+1)<(NMAX-1)))) {
105: lista[pozitie].informatie = lista[pozitie+1].informatie;
106: pozitie++;
107: }
108: if(elementCurent == -1)
109: elementCurent = NMAX-1;
110: else elementCurent--;
111: lista[elementCurent].informatie = 0;
112: }
113:

S-ar putea să vă placă și