Advertisement
Koelion

pedro listy

Jan 21st, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Node {
  5.     Node(int n)
  6.     {
  7.         this->n = n; // musimy użyć this->n aby wskazać że chcemy ustawić n naszego obiektu równe przekazanej wartosci n
  8.         next = NULL;
  9.     }
  10.  
  11.     int n;
  12.     Node *next;
  13. };
  14.  
  15. struct List {
  16.     Node *head;
  17.     Node *tail;
  18.  
  19.     List() // konstruktor
  20.     {
  21.         head = NULL;
  22.         tail = NULL;
  23.     }
  24.  
  25.     void add(int n){
  26.         Node *node = new Node(n); //wywołujemy konstruktor z paramterem n ktry ustawia n noda na n
  27.         //node->n = n;
  28.         //node->next = NULL; //ponieważ utwożyliśmy konstruktor do node ten kod jest zbedny ponieważ robi to za nas konstruktor
  29.         if (head == NULL) {
  30.             head = node;
  31.             tail=head;
  32.         }
  33.         else {
  34.             tail->next = node;
  35.             tail = tail->next;
  36.         }
  37.     }
  38.  
  39.     void display(){
  40.         Node *node = head; //=head bo na *node bylby losowy smiec
  41.         while (node != NULL) {
  42.             cout << "n = " << node->n << endl;
  43.             node = node->next;
  44.         }
  45.     }
  46.  
  47.     void delete_el(int n) { //jeden element znaleziony usuwa
  48.         Node *node = head;
  49.         Node *previous = head;
  50.         while (node != NULL) {
  51.             if (node->n == n) {
  52.                 if (node == head) {
  53.                     Node *tmp = head->next;
  54.                     delete node;
  55.                     head = tmp;
  56.                 }
  57.                 else {
  58.                     previous->next = node->next;
  59.                     delete node;
  60.                 }
  61.                 break;
  62.             }
  63.             previous = node;
  64.             node = node->next;
  65.         }
  66.     }
  67.  
  68.     void delete_firstel() {
  69.         Node *node = head;
  70.         Node *tmp = head->next;
  71.         delete head;
  72.         head = tmp;
  73.     }
  74.  
  75.     void delete_lastel() {
  76.         Node *node = head;
  77.         Node *tmp = head;
  78.         while (node != NULL) {
  79.             if (node->next == NULL) {
  80.                 if (node == head) {
  81.                     delete head;
  82.                     head = NULL;
  83.                 }
  84.                 else {
  85.                     delete node;
  86.                     tmp->next = NULL;
  87.                     tail = tmp;
  88.                 }
  89.                 break;
  90.             }
  91.             tmp = node;
  92.             node = node->next;
  93.         }
  94.     }
  95.  
  96. };
  97.  
  98.  
  99. struct A
  100. {
  101.     int a;
  102.     int b;
  103.     int c;
  104.     A()
  105.     {
  106.         a = 0;
  107.         b = 1;
  108.         c = 2;
  109.     }
  110. };
  111. int main()
  112. {
  113.  
  114.     List list;//zadeklarowanie listy
  115.     for (int i=1;i<=10;i++)
  116.         list.add(i); //dodanie elementu do listy
  117.     list.display();
  118.     list.delete_lastel();
  119.     list.add(16);
  120.     list.display();
  121.     while (true);
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement