Advertisement
peterzig

[AISD] Lista Dwukierunkowa

Sep 13th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. // [AISD] Lista Dwukierunkowa.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <conio.h>
  6. #include <malloc.h>
  7.  
  8. struct Lista
  9. {
  10.     float data;
  11.     Lista *prev;
  12.     Lista *next;
  13. };
  14.  
  15. void Dodaj(Lista **lista, float wartosc)
  16. {
  17.     Lista *L = (Lista*)malloc(sizeof(Lista));
  18.  
  19.     if (L != NULL)
  20.     {
  21.         L->data = wartosc;
  22.         L->prev = 0;
  23.         L->next = 0;
  24.  
  25.         if (*lista == 0)
  26.         {
  27.             *lista = L;
  28.         }
  29.         else
  30.         {
  31.             Lista *kopia = *lista;
  32.             while (kopia->next != 0) kopia = kopia->next;
  33.             kopia->next = L;
  34.             L->prev = kopia;
  35.         }
  36.     }
  37. }
  38.  
  39. int Rozmiar(Lista *L)
  40. {
  41.     if (L != NULL)
  42.     {
  43.         int r = 1;
  44.         while (L->next != 0)
  45.         {
  46.             L = L->next;
  47.             r++;
  48.         }
  49.         return r;
  50.     }
  51.     return 0;
  52. }
  53.  
  54. float Pobierz(Lista *L)
  55. {
  56.     if (L != 0)
  57.     {
  58.         return L->data;
  59.     }
  60.     return 0;
  61. }
  62.  
  63. int main()
  64. {
  65.     Lista *lista = NULL;
  66.     Lista *X = NULL;
  67.     unsigned int element;
  68.  
  69.     Dodaj(&lista, 5.2);
  70.     Dodaj(&lista, 6.2);
  71.     Dodaj(&lista, 7.2);
  72.     Dodaj(&lista, 8.2);
  73.     Dodaj(&lista, 9.2);
  74.  
  75.     printf("Na liscie znajduje sie %i elementow.\n", Rozmiar(lista));
  76.     printf("Obecny element listy wskazuje na -> %f\n\n", lista->data);
  77.  
  78.     element = 1;
  79.     for (X = lista; X != NULL; X = X->next)
  80.     {
  81.         printf("Element nr %i: %f\n", element, Pobierz(X));
  82.         ++element;
  83.     }
  84.     printf("Obecny element listy wskazuje na -> %f\n\n", lista->data);
  85.  
  86.     for (unsigned int i = 0; lista != NULL; lista = lista->next, i++)
  87.     {
  88.         printf("Element nr %i: %f\n", i + 1, Pobierz(lista));
  89.  
  90.         if (lista->next == NULL)
  91.         {
  92.             break;
  93.         }
  94.     }
  95.     for (unsigned int i = 10; lista != NULL; lista = lista->prev, i--)
  96.     {
  97.         printf("Element nr %i: %f\n", i + 1, Pobierz(lista));
  98.  
  99.         if (lista->prev == NULL)
  100.         {
  101.             break;
  102.         }
  103.         printf("\n Obecny element wskazuje na -> %f\n\n", lista->data);
  104.     }
  105.     _getch();
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement