Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "header.h"
- void ideti_elementa(sarasas **galva, int elemento_duomenys, sarasas **uodega) {
- sarasas *dummy;
- sarasas *naujas_elementas;
- ///Pirmas elementas, nusistatom jam reiksmes
- if ((*galva) == NULL) {
- (*galva) = malloc(sizeof(sarasas));
- (*galva)->pries = NULL;
- (*galva)->kitas = NULL;
- (*galva)->data = elemento_duomenys;
- (*uodega) = (*galva);
- return;
- }
- ///Jei ne
- dummy = (*uodega);
- ///while (dummy->kitas != NULL){ ///Einam per visus, kol "kito adresas" = null, tai paskutinis elementas
- /// dummy = dummy->kitas; ///Vis slenkam per elementus
- /// }
- naujas_elementas = malloc(sizeof(sarasas)); ///priskiriam vietos atmintyje, kad joj tilptu struktura
- dummy->kitas = naujas_elementas; ///Isirasom, i pries tai buvusi "kitas", koks naujo elemento adresas
- naujas_elementas->pries = dummy; ///Naujojo elemento "pries" isisrasom dabartini adresa
- naujas_elementas->kitas = NULL; ///Po naujojo elemento nieko nera, taigi adresas NULL
- naujas_elementas->data = elemento_duomenys;
- (*uodega) = naujas_elementas;
- }
- void spausdinti_sarasa(sarasas *galva) {
- if (galva == NULL) { ///Sarasas tuscias
- printf("Saraso nera\n");
- return;
- }
- int i = 1; ///While do, kad rasytu, jei sarase tik vienas elementas
- printf("\nSarasas\n");
- do{
- printf("%d elementas yra %d \n", i, galva->data);
- galva = galva->kitas;
- i++;
- }
- while (galva != NULL); ///Einam per visus, kol "kitas" neegzistuoja
- }
- void panaikinti_elementa(sarasas **galva, int ivedimas){
- sarasas *dummy = (*galva);
- int istrinta = 0; ///Testavimui, ar kazka istrynem
- while(dummy != NULL){ ///Einam per visus, kol "kitas" neegzistuoja
- if(dummy->data == ivedimas){ ///Tikrinam ar ta ir norim istrinti
- if(dummy->pries != NULL){ ///Tikrinam, ar tai nera pirmas elemenas
- dummy->pries->kitas = dummy->kitas; ///Pakeiciam ankstesnio elementos "kitas" adresa, nes dabartinis bus istrintas
- }
- else {
- (*galva) = (*galva)->kitas; ///Jei yra, pakeiciam listo pradzia
- }
- if(dummy->kitas != NULL){ ///Tikrinam ar tai nera paskutinis elementas
- dummy->kitas->pries = dummy->pries; ///Pakeiciam ankstesnio elementos "pries" adresa, nes dabartinis bus istrintas
- }
- sarasas *istrinti = dummy; ///Reikalinga, jei bus kelios vienodos reiksmes, kad nepamesti, kur esame
- dummy = dummy->kitas; ///Pasistumiam per elementus
- free(istrinti); ///Panaikinam elementa
- istrinta = 1; ///Pazymim jog istrynem
- }
- else dummy = dummy->kitas;
- }
- if(istrinta == 0){
- printf("Elemento, kurio reiksme butu %d sarase nera \n", ivedimas);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement