Prowadzący zadał jednak inne zadanie niż te co tworzyłem wcześniej... jeszcze cięższe jak dla mnie. Mianowicie lista dwukierunkowa i operacje na niej wszystkie.... nawet na wykładach tego nie mieliśmy... ale go to nei obchodzi.
Znalazłem coś na necie:
//Struktura z danymi studenta
typedef struct DANE
{
char* imie;
char* nazwisko;
}Dane;
//Struktura z listą dwukierunkową
typedef struct STUDENT Student;
struct STUDENT
{
Dane dane;
Student* next;
Student* prev;
};
Nastepnie funkcja tworzaca:
Student* stworz_element()
{
Student *element;
char bufor[30 + 1];
char *imie, *nazwisko;
system("cls");
printf("Imie: ");
gets(bufor);
imie = (char*)malloc(sizeof(char)* (strlen(bufor) + 1));
strcpy(imie, bufor);
printf("Nazwisko: ");
gets(bufor);
nazwisko = (char*)malloc(sizeof(char)* (strlen(bufor) + 1));
strcpy(nazwisko, bufor);
element = (Student*)malloc(sizeof(Student));
element->next = NULL;
element->prev = NULL;
element->dane.imie = imie;
element->dane.nazwisko = nazwisko;
return element;
}
I teraz jak w mainie chcę skorzystać z funkcji stworz element to dostaję błąd conflicting types a robię to tak:
Student *dane;
dane = stworz_element();
i to nie działa! Jak to zrobić żeby ten element się stworzył...
Następną częśc kodu mam dodawanie elementu na koniec listy:
void dodaj_na_koniec(Student **head)
{
Student *pom, *tmp = stworz_element();
if (*head == NULL)
*head = tmp;
else
{
pom = *head;
while (pom->next != NULL)
pom = pom->next;
tmp->prev = pom;
pom->next = tmp;
}
}
Nie ogarniam tego kompletnie... nie wiem jak prowadzacy może zrobić coś czego nei było, uwalić wszystkich chce
Pomóżcie proszę ;/