Advertisement
mihainan

C++ - Marius 2.0

Mar 31st, 2014
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. typedef struct Node
  8. {
  9.     int val;
  10.     struct Node* next;
  11. }Node;
  12.  
  13. typedef Node* List;
  14.  
  15. List init(int val)
  16. {
  17.     List lista;
  18.     lista = new struct Node;
  19.     lista->val = val;
  20.     lista->next = NULL;
  21.     return lista;
  22. }
  23.  
  24. List addLast(List l, int val)
  25. {
  26.     List aux;
  27.     if(l == NULL)
  28.     {
  29.         aux = new struct Node;
  30.         aux->val = val;
  31.         aux->next = NULL;
  32.         return aux;
  33.     }
  34.     else
  35.     {
  36.         if(l->next==NULL)
  37.         {
  38.             l->next=init(val);
  39.             return l;
  40.         }
  41.         else
  42.         {
  43.             l->next = addLast(l->next, val);
  44.             return l;
  45.         }
  46.     }
  47. }
  48.  
  49. void printList(List l)
  50. {
  51.     if(l != NULL)
  52.     {
  53.         while(l != NULL)
  54.         {
  55.             printf("%d ", l->val);
  56.             l = l->next;
  57.         }
  58.         printf("\n");
  59.     }
  60.     else
  61.     {
  62.         printf("The linked list is empty!\n");
  63.     }
  64. }
  65.  
  66. List addFirst(List l, int val)
  67. {
  68.     List temp;
  69.     temp = new struct Node;
  70.     temp->val = val;
  71.     temp->next = l;
  72.     l = temp;
  73.     return l;
  74. }
  75.  
  76. List delLast(List l)
  77. {
  78.     List temp;
  79.     temp = l;
  80.     while(temp->next->next != NULL)
  81.     {
  82.         temp = temp->next;
  83.     }
  84.     temp->next = NULL;
  85.     return l;
  86. }
  87.  
  88. List delFirst(List l)
  89. {
  90.     if(l != NULL)
  91.     {
  92.         l=l->next;
  93.     }
  94.     else
  95.     {
  96.         l = NULL;
  97.     }
  98.     return l;
  99. }
  100.  
  101. List freeList(List l)
  102. {
  103.     List tmp;
  104.     if(l != NULL)
  105.     {
  106.         while (l != NULL)
  107.             {
  108.                 tmp = l;
  109.                 l = l->next;
  110.                 delete tmp;
  111.             }
  112.     }
  113.     return NULL;
  114. }
  115.  
  116. List addEven(List l)
  117. {
  118.     int first;
  119.     first = 1;
  120.     List l1;
  121.     if(l == NULL)
  122.     {
  123.         return NULL;
  124.     }
  125.     else
  126.     {
  127.         while(l != NULL)
  128.         {
  129.             if(l->val % 2 == 0)
  130.             {
  131.                 if(first == 1)
  132.                 {
  133.                     l1 = init(l->val);
  134.                     first = 0;
  135.                 }              
  136.                 else
  137.                     l1 = addLast(l1, l->val);
  138.             }
  139.             l = l->next;
  140.         }
  141.     }
  142.     return l1;
  143. }
  144.  
  145. List addOdd(List l)
  146. {
  147.     int first;
  148.     first = 1;
  149.     List l1;
  150.     if(l == NULL)
  151.     {
  152.         return NULL;
  153.     }
  154.     else
  155.     {
  156.         while(l != NULL)
  157.         {
  158.             if(l->val % 2 == 1)
  159.             {
  160.                 if(first == 1)
  161.                 {
  162.                     l1 = init(l->val);
  163.                     first = 0;
  164.                 }              
  165.                 else
  166.                     l1 = addLast(l1, l->val);
  167.             }
  168.             l = l->next;
  169.         }
  170.     }
  171.     return l1;
  172. }
  173.  
  174. int main()
  175. {
  176.     List l, l1, l2;
  177.     int n;
  178.     l = init(0);
  179.     printList(l);
  180.     scanf("%d", &n);
  181.     while (n!= 0) {
  182.         l = addFirst(l, n);
  183.         scanf("%d", &n);
  184.     }
  185.     printList(l);
  186.     printf("Adaugare la sfarsit!\n");
  187.     l = addLast(l, 10);
  188.     l = addLast(l, 99);
  189.     l = addLast(l, 100);
  190.     printList(l);
  191.     printf("Eliminare ultimul!\n");
  192.     l = delLast(l);
  193.     printList(l);
  194.     printf("Eliminare primul!\n");
  195.     l = delFirst(l);
  196.     printList(l);
  197.     l1 = addEven(l);
  198.     l2 = addOdd(l);
  199.     printList(l1);
  200.     printList(l2);
  201.     l = freeList(l);
  202.     printList(l);
  203.     return 0;
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement