Witam, czy mógłby ktoś mi sprawdzić, czemu nie działają mi 2 funkcje: usuwanie_koniec (ostatni element ma być usunięty), dodawanie_dowolne(w dowolnym miejscu ma być dodany element.
Pozdrawiam
#include<stdio.h>
#include<stdlib.h>
struct baza{
char imie[20];
char nazwisko[20];
int numer;
struct baza *next;
};
void fdodawanie_na_koniec(struct baza **head);
void fdodawanie_na_poczatek(struct baza **head);
void fwypisywanie(struct baza *head);
void usuwanie_poczatek(struct baza **head);
void usuwanie_koniec(struct baza **head);
void dodawanie_dowolne(struct baza**head);
int main(void){
struct baza *head = NULL;
int i;
char menu=NULL;
printf("Wpisz a - dodac na koniec, b - dodac na poczatek, c - wyswietlic, d - usunac poczatek, e - usunac koniec, f - dodac dowolne: ");
while(menu != 'q'){
scanf("%c", &menu);
if(menu == 'a')
fdodawanie_na_koniec(&head);
else if(menu == 'b')
fdodawanie_na_poczatek(&head);
else if(menu == 'c')
fwypisywanie(head);
else if(menu == 'd')
usuwanie_poczatek(&head);
else if(menu == 'e')
usuwanie_koniec(&head);
else if(menu == 'f')
dodawanie_dowolne(&head);
while(getchar() != '\n')
continue;
printf("Wpisz a - dodac na koniec, b - dodac na poczatek, c - wyswietlic, d - usunac poczatek, e - usunac koniec, f - dodac dowolne: ");
}
system("PAUSE");
return 0;
}
void fdodawanie_na_koniec(struct baza **head){
struct baza*temp=(struct baza*)malloc(sizeof(struct baza));
if( temp == NULL)
return;
if(*head == NULL){
*head=temp;
}
else{
struct baza*wsk = *head;
while(wsk->next != NULL)
wsk = wsk->next;
wsk->next = temp;
}
temp->next = NULL;
printf("\nPodaj imie: ");
scanf("%s", temp->imie);
printf("\nPodaj nazwisko: ");
scanf("%s", temp->nazwisko);
printf("\nPodaj numer: ");
scanf("%d", &(temp->numer));
}
void fdodawanie_na_poczatek(struct baza **head){
struct baza*nowy = (struct baza*)malloc(sizeof(struct baza));
printf("\nPodaj imie: ");
scanf("%s", nowy->imie);
printf("\nPodaj nazwisko: ");
scanf("%s", nowy->nazwisko);
printf("\nPodaj numer: ");
scanf("%d", &(nowy->numer));
nowy->next=*head;
*head = nowy;
}
void fwypisywanie(struct baza *head){
struct baza*temp = head;
while(temp != NULL){
printf("Imie: %s Nazwsko: %s Numer: %d\n", temp->imie, temp->nazwisko, temp->numer);
temp = temp->next;
}
}
void usuwanie_poczatek(struct baza **head){
if(*head == NULL){
printf("Lista jest pusta!");
return;
}
struct baza*wsk = NULL;
wsk = (*head)->next;
free(*head);
*head=wsk;
}
void usuwanie_koniec(struct baza **head){
struct baza*wsk1=NULL;
struct baza*wsk2=NULL;
wsk1=(*head)->next;
wsk2=wsk1->next;
while(wsk1->next != NULL){
wsk1=wsk1->next;
wsk2 = wsk2->next;
}
free(wsk1);
wsk2->next = NULL;
}
void dodawanie_dowolne(struct baza**head){
int index, i;
struct baza*nowa = (struct baza*)malloc(sizeof(struct baza));
struct baza* wsk;
wsk = (*head);
printf("Podaj numer w ktorym dodac: ");
scanf("%d", &index);
for(i = 0;i<index;i++)
wsk=wsk->next;
nowa->next = wsk->next;
wsk->next = nowa;
printf("\nPodaj imie: ");
scanf("%s", nowa->imie);
printf("\nPodaj nazwisko: ");
scanf("%s", nowa->nazwisko);
printf("\nPodaj numer: ");
scanf("%d", &(nowa->numer));
}