Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Node
- {
- int info;
- Node* next;
- };
- class Lista
- {
- public:
- Node* head;
- int counter = 0;
- void insert(int val, int poz);
- void delbyIndex(int poz);
- void print();
- void reverse();
- void deleteList();
- };
- void Lista::print()
- {
- Node* temp = head;
- cout<<"\nAfisare lista cu "<<counter<<" noduri: ";
- while(temp != NULL)
- {
- cout<<temp->info<<" ";
- temp = temp->next;
- }
- }
- void Lista::insert(int val, int poz)
- {
- Node* newNode = new Node;
- newNode->info = val;
- newNode->next = NULL;
- counter++;
- if(head == NULL)
- {
- head = newNode;
- return;
- }
- if(poz == 0)
- {
- newNode->next = head;
- head = newNode;
- return;
- }
- int i = 0;
- Node* temp = head;
- while(temp->next != NULL && i < poz-1)
- {
- temp = temp->next;
- i++;
- }
- newNode->next = temp->next;
- temp->next = newNode;
- }
- void Lista::delbyIndex(int poz)
- {
- if(head == NULL)
- return;
- counter--;
- if(poz == 0)
- {
- Node* deSters = head;
- head = head->next;
- delete deSters;
- return;
- }
- int i = 0;
- Node* temp = head;
- while(temp->next != NULL && i < poz-1) //parcurg lista pana la predecesorul elementului de sters
- {
- temp = temp->next;
- i++;
- }
- Node* deSters = temp->next;
- if(temp->next->next != NULL)
- temp->next = temp->next->next; //elimin legaturile cu elementul care trebuie sters
- else temp->next = NULL; //daca elementul de sters era pe ultima pozitie, el va deveni null
- delete deSters;
- }
- void Lista::reverse()
- {
- Node* current = head, *prev = NULL, *urm = NULL;
- while(current != NULL)
- {
- urm = current-> next;
- current->next = prev; //inversez directia de mers
- prev = current;
- current = urm;
- }
- head = prev;
- }
- void Lista::deleteList()
- {
- Node* deSters = head;
- while(head != NULL)
- {
- head = head->next;
- delete deSters;
- deSters = head;
- counter--;
- cout<<"S-a sters un element. Counter = "<<counter<<endl;
- }
- }
- int main()
- {
- Lista p;
- p.head = NULL;
- p.insert(1,0);
- p.print();
- p.insert(2,1);
- p.print();
- p.insert(3,1);
- p.print();
- p.insert(4,3);
- p.print();
- p.insert(5,3);
- p.print();
- p.delbyIndex(4);
- p.print();
- p.delbyIndex(1);
- p.print();
- p.reverse();
- cout<<"\nAfisare lista dupa inversare: ";
- p.print();
- cout<<"\nCounter-ul inainte de stergerea listei: "<<p.counter<<endl;
- cout<<"STERGERE LISTA\n";
- p.deleteList();
- return 0;
- }
Add Comment
Please, Sign In to add comment