mihainan

Nan Mihai - Structuri de date

Mar 17th, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Element
  5. {
  6.     struct Element *prev;
  7.     int data;
  8.     struct Element *next;
  9. }Element;
  10.  
  11. typedef Element* List;
  12.  
  13. List addFirst(int value, List l)
  14. {
  15.     List nou;
  16.     nou = (Element*) malloc(sizeof(Element));
  17.     nou->prev = NULL;
  18.     nou->data = value;
  19.     nou->next = l;
  20.     if(l == NULL)
  21.     {
  22.         l->data = value;
  23.         l->prev = NULL;
  24.         l->next=NULL;
  25.     }
  26.     else
  27.     {
  28.         l->prev = nou;
  29.         l = nou;
  30.     }
  31.     return l;
  32. }
  33.  
  34. List addLast(List l, int val)
  35. {
  36.     List nou,q;
  37.     if (l==NULL)
  38.     {
  39.         l->prev = NULL;
  40.         l->data = val;
  41.         l->next = NULL;
  42.     }
  43.     else
  44.     {
  45.         nou=(Element *)malloc(sizeof(Element));
  46.         q=l;
  47.         while(q->next!=NULL)
  48.         q=q->next;
  49.         nou->data=val;
  50.         nou->next=NULL;
  51.         nou->prev=q;
  52.         q->next=nou;
  53.     }
  54.     return l;
  55. }
  56.  
  57. List delFirst(List l)
  58. {
  59.     if(l == NULL)
  60.         return NULL;
  61.     else
  62.     {
  63.         List nou;
  64.         nou = l->next;
  65.         free(l);
  66.         l = nou;
  67.         if(l != NULL)
  68.         {
  69.             l->prev = NULL;
  70.         }
  71.     }
  72.     return l;
  73. }
  74.  
  75. List delLast(List l)
  76. {
  77.     List temp, tmp;
  78.     tmp = l;
  79.     while(tmp->next != NULL)
  80.     {
  81.         tmp = tmp->next;
  82.     }
  83.     tmp->prev->next = NULL;
  84.     free(tmp->next);
  85.     return l;
  86. }
  87.  
  88. void print(List l)
  89. {
  90.     if(l == NULL)
  91.     {
  92.         printf("Lista este nula!");
  93.     }
  94.     else
  95.     {
  96.         while(l->next != NULL)
  97.         {
  98.             printf("%d ",l->data);
  99.             l = l->next;
  100.         }
  101.     }
  102.     printf("\n");
  103. }
  104.  
  105. List init(int val)
  106. {
  107.     List l;
  108.     l = (Element *) malloc(sizeof(Element));
  109.     l->prev = NULL;
  110.     l->data = val;
  111.     l->next = NULL;
  112.     return l;
  113. }
  114.  
  115. int main()
  116. {
  117.     List l;
  118.     int x;
  119.     scanf("%d", &x);
  120.     l = init(x);
  121.     l = addFirst(5, l);
  122.     l = addFirst(6, l);
  123.     l = addFirst(7, l);
  124.     scanf("%d", &x);
  125.     while(x!= 0)
  126.     {
  127.         l = addFirst(x, l);
  128.         scanf("%d", &x);
  129.     }
  130.     l = addLast(l, 10);
  131.     l = addLast(l, 11);
  132.     l = addLast(l, 12);
  133.     print(l);
  134.     printf("Sterge primul element!\n");
  135.     l = delFirst(l);
  136.     print(l);
  137.     printf("Sterge ultimul element!\n");
  138.     l = delLast(l);
  139.     print(l);
  140.     return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment