#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
struct Dane{
char *imie;
char *nazwisko;
int wiek;
long pesel;
char plec;
struct Dane* next;
struct Dane* prev;
};
void wyswietl_liste_od_przodu(Dane *head)
{
struct Dane *tymczasowy = head;
while (tymczasowy!=NULL)
{
printf(" - /n");
printf("%s, %s, %d, %ld, %c ", tymczasowy->imie, tymczasowy->nazwisko, tymczasowy->wiek, tymczasowy->pesel, tymczasowy->plec);
tymczasowy = tymczasowy->next;
}
}
void wyswietl_liste_od_tylu(Dane **head)
{
Dane* tymczasowy = *head;
while (tymczasowy->next != NULL) {
tymczasowy = tymczasowy->next;
}
while (tymczasowy != *head) {
printf("%d - ", tymczasowy->wiek);
tymczasowy = tymczasowy->prev;
}
printf("%d - ", tymczasowy->wiek);
}
Dane* dodawanie_elementu(Dane *current){
Dane* wynik = (Dane*)malloc(sizeof(Dane));
strcpy_s(wynik->imie, current->imie);
wynik->prev = NULL;
wynik->next = NULL;
return wynik;
free(wynik);
}
Dane* dodawanie_na_gore(Dane **head, Dane *do_dodania)
{
do_dodania->next = *head;
if (*head != NULL)
{
(*head)->prev = do_dodania;
}
*head = do_dodania;
do_dodania->prev = NULL;
return do_dodania;
}
Dane* znajdowanie(Dane* head, char *nazwisko)
{
Dane* tmpp = head;
while (tmpp != NULL)
{
if (strcmp(nazwisko, tmpp->nazwisko)==true)
{
return tmpp;
}
tmpp = tmpp->next;
}
return NULL;
}
void usuwanie_elementu(Dane **head, Dane *do_usuniecia)
{
if (*head == do_usuniecia) {
*head = do_usuniecia->next;
if(*head != NULL)
{
(*head)->prev = NULL;
}
}
else
{
if(do_usuniecia->next!=NULL)
{
do_usuniecia->next->prev = do_usuniecia->prev;
}
do_usuniecia->prev->next = do_usuniecia->next;
}
do_usuniecia->next = NULL;
do_usuniecia->prev = NULL;
return;
}
int main()
{
Dane* head = NULL;
Dane* tmp;
Dane *current;
int wybor = 0;
int wybor2;
char imie[20];
char nazwisko[20];
int wiek=0;
long pesel=0;
char plec;
for (;;)
{
printf("Wybierz opcje: \n");
printf("1.Dodaj osobe do listy: \n");
printf("2.Wyszukaj osoby po nazwisku lub imieniu: \n");
printf("3.Kasowanie osoby po nazwisku: \n");
printf("4.Wyświetlanie listy: \n");
printf("5.Odczytaj liste z pliku: \n ");
printf("6.Zapisz liste do pliku: \n");
printf("7.Sortuj liste po nazwisku: \n");
printf("8.Zakończ program: \n");
scanf_s("%d", &wybor);
if (wybor == 1)
{
printf("Podaj dane: \n");
printf("\n");
gets_s(current->imie,sizeof(current->imie));
scanf_s("%d", &wiek);
tmp = dodawanie_elementu(current);
dodawanie_na_gore(&head, tmp);
}
else if(wybor==2)
{
printf("Podaj wiek: \n");
scanf_s("%s", nazwisko);
tmp = znajdowanie(head, nazwisko);
if (strcmp(nazwisko, tmp->nazwisko)==true)
{
printf("Znaleziono uzytkownika : %s", tmp->nazwisko);
break;
}
}
else if(wybor == 3)
{
//printf("Podaj wiek: \n");
//scanf_s("%d", &wiekk);
//tmp = znajdowanie(head, wiekk);
//usuwanie_elementu(&head, tmp);
}
else if (wybor == 4)
{
printf("Wybierz: \n");
printf("1.Od przodu:\n");
printf("2.Od tylu: \n");
scanf_s("%d", &wybor2);
if (wybor2 == 1)
{
wyswietl_liste_od_przodu(head);
}
else if (wybor2 == 2)
{
wyswietl_liste_od_tylu(&head);
}
}
else if (wybor == 8)
{
break;
}
}
}
funckja dodawanie_elementu cały czas wyrzuca mi błąd że wynik jest NULLEM i nie przypisuje wartości , w mainie przy ifie (wybor==1) podaje wartości z klawi które maja isc do funkcji dodawanie elementu