Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct element
  5. {
  6. int dana;
  7. struct element *nastepny, *poprzedni;
  8. }element;
  9.  
  10. typedef struct lista
  11. {
  12. element *head, *tail;
  13. int size;
  14. }lista;
  15.  
  16. void init(lista *L)
  17. {
  18. L->head=L->tail=NULL;
  19. L->size=0;
  20. }
  21. void wyswietl_od_konca(lista *L)
  22. {
  23. element *k;
  24. k=L->tail;
  25. if(k==NULL)
  26. printf("\nPUSTA LISTA!\n");
  27. while(k!=NULL)
  28. {
  29. printf("Dane: %d\n", k->dana);
  30. k=k->poprzedni;
  31. }
  32. return;
  33. }
  34. void wyswietl_od_poczatku(lista *L)
  35. {
  36. element *k;
  37. k=L->head;
  38. if(k==NULL)
  39. printf("\nPUSTA LISTA!\n");
  40. while(k!=NULL)
  41. {
  42. printf("Dane: %d\n", k->dana);
  43. k=k->nastepny;
  44. }
  45. return;
  46. }
  47. void dodaj_na_poczatek(lista *L, int a)
  48. {
  49. element *r;
  50. r=(element*)malloc(sizeof(element));
  51. r->dana=a;
  52. L->size++;
  53. r->poprzedni=NULL;
  54. r->nastepny=L->head;
  55. L->head=r;
  56. if(r->nastepny==NULL)
  57. L->tail=r;
  58. else
  59. r->nastepny->poprzedni=r;
  60. return;
  61. }
  62. void usun_z_poczatku(lista *L)
  63. {
  64. element *e;
  65. e=L->head;
  66. if(L->head==NULL)
  67. return;
  68. L->size--;
  69. L->head=e->nastepny;
  70. free(e);
  71. if(L->head==NULL)
  72. L->tail=NULL;
  73. else
  74. L->head->poprzedni=NULL;
  75. return;
  76. }
  77. void dodaj_na_koniec(lista *L, int a)
  78. {
  79. element *r;
  80. r=(element*)malloc(sizeof(element));
  81. r->dana=a;
  82. L->size++;
  83. r->nastepny=NULL;
  84. r->poprzedni=L->tail;
  85. L->tail=r;
  86. if(r->poprzedni==NULL)
  87. L->head=r;
  88. else
  89. r->poprzedni->nastepny=r;
  90. return;
  91. }
  92. void usun_z_konca(lista *L)
  93. {
  94. element *e;
  95. e=L->tail;
  96. if(L->tail==NULL)
  97. return;
  98. L->size--;
  99. L->tail=e->poprzedni;
  100. free(e);
  101. if(L->tail==NULL)
  102. L->head=NULL;
  103. else
  104. L->tail->nastepny=NULL;
  105. return;
  106. }
  107. element* szukaj(lista *L, int k)
  108. {
  109. int i;
  110. element *p;
  111. p=L->head;
  112. if(L->size<k || k<1)
  113. {
  114. printf("\nNie ma takiego elementu!\n");
  115. return NULL;
  116. }
  117. else
  118. for(i=1; i<k; i++)
  119. p=p->nastepny;
  120. return p;
  121. }
  122.  
  123. int main()
  124. {
  125. int liczba;
  126. lista nowa_lista;
  127. init(&nowa_lista);
  128. /*puts("Podaj element dodany(znak konczy wprowadzanie)");
  129. while((scanf("%d",&liczba))==1)
  130. {
  131. head = dodaj_element(head,liczba);
  132. }
  133. getchar();*/
  134. dodaj_na_poczatek(&nowa_lista,5);
  135. dodaj_na_poczatek(&nowa_lista,6);
  136. dodaj_na_koniec(&nowa_lista,4);
  137. putchar('\n');
  138. wyswietl_od_poczatku(&nowa_lista);
  139. putchar('\n');
  140. wyswietl_od_konca(&nowa_lista);
  141. szukaj(&nowa_lista,5);
  142.  
  143. return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement