Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "header.h"
  4.  
  5. void ideti_elementa(sarasas **galva, int elemento_duomenys, sarasas **uodega) {
  6. sarasas *dummy;
  7. sarasas *naujas_elementas;
  8.  
  9. ///Pirmas elementas, nusistatom jam reiksmes
  10. if ((*galva) == NULL) {
  11. (*galva) = malloc(sizeof(sarasas));
  12. (*galva)->pries = NULL;
  13. (*galva)->kitas = NULL;
  14. (*galva)->data = elemento_duomenys;
  15. (*uodega) = (*galva);
  16. return;
  17. }
  18.  
  19. ///Jei ne
  20.  
  21. dummy = (*uodega);
  22. ///while (dummy->kitas != NULL){ ///Einam per visus, kol "kito adresas" = null, tai paskutinis elementas
  23. /// dummy = dummy->kitas; ///Vis slenkam per elementus
  24. /// }
  25. naujas_elementas = malloc(sizeof(sarasas)); ///priskiriam vietos atmintyje, kad joj tilptu struktura
  26. dummy->kitas = naujas_elementas; ///Isirasom, i pries tai buvusi "kitas", koks naujo elemento adresas
  27. naujas_elementas->pries = dummy; ///Naujojo elemento "pries" isisrasom dabartini adresa
  28. naujas_elementas->kitas = NULL; ///Po naujojo elemento nieko nera, taigi adresas NULL
  29. naujas_elementas->data = elemento_duomenys;
  30. (*uodega) = naujas_elementas;
  31. }
  32.  
  33. void spausdinti_sarasa(sarasas *galva) {
  34. if (galva == NULL) { ///Sarasas tuscias
  35. printf("Saraso nera\n");
  36. return;
  37. }
  38.  
  39. int i = 1; ///While do, kad rasytu, jei sarase tik vienas elementas
  40. printf("\nSarasas\n");
  41.  
  42. do{
  43. printf("%d elementas yra %d \n", i, galva->data);
  44. galva = galva->kitas;
  45. i++;
  46. }
  47. while (galva != NULL); ///Einam per visus, kol "kitas" neegzistuoja
  48. }
  49.  
  50. void panaikinti_elementa(sarasas **galva, int ivedimas){
  51. sarasas *dummy = (*galva);
  52. int istrinta = 0; ///Testavimui, ar kazka istrynem
  53.  
  54. while(dummy != NULL){ ///Einam per visus, kol "kitas" neegzistuoja
  55. if(dummy->data == ivedimas){ ///Tikrinam ar ta ir norim istrinti
  56. if(dummy->pries != NULL){ ///Tikrinam, ar tai nera pirmas elemenas
  57. dummy->pries->kitas = dummy->kitas; ///Pakeiciam ankstesnio elementos "kitas" adresa, nes dabartinis bus istrintas
  58. }
  59. else {
  60. (*galva) = (*galva)->kitas; ///Jei yra, pakeiciam listo pradzia
  61. }
  62. if(dummy->kitas != NULL){ ///Tikrinam ar tai nera paskutinis elementas
  63. dummy->kitas->pries = dummy->pries; ///Pakeiciam ankstesnio elementos "pries" adresa, nes dabartinis bus istrintas
  64. }
  65. sarasas *istrinti = dummy; ///Reikalinga, jei bus kelios vienodos reiksmes, kad nepamesti, kur esame
  66. dummy = dummy->kitas; ///Pasistumiam per elementus
  67. free(istrinti); ///Panaikinam elementa
  68. istrinta = 1; ///Pazymim jog istrynem
  69. }
  70. else dummy = dummy->kitas;
  71. }
  72. if(istrinta == 0){
  73. printf("Elemento, kurio reiksme butu %d sarase nera \n", ivedimas);
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement