Dobra , odświeżam temat. Chcę po prostu wrzucić trzy liczby na stos, potem zdjąć z niego jeden i wyswietlic elementy stosu. Daje np 1 2 3 ( powinno zdjac 3 i wyswietlic mi 2 i 1. Tymczasem program po wczytaniu 3 liczb konczy dzialanie) W sytuacji gdy usunę wywołanie funkcji pop to wyswietla te trzy liczby, czyli proces wrzucania liczb do listy przebiega ok .Oto mój kod. :
#include <stdio.h>
#include <stdlib.h>
typedef struct element {
struct element *next;
unsigned int liczba;
} el_listy;
el_listy *first=0;
el_listy *push (el_listy *lista,unsigned int a)
{
el_listy *nowy;
nowy=malloc(sizeof(el_listy));
nowy->liczba=a;
nowy->next=first;
return nowy;
}
el_listy *pop (el_listy *lista, unsigned int element){
el_listy *wsk=lista;
while(wsk->next != NULL)
{
if (wsk->next->liczba==element)
{
el_listy *usuwany=wsk->next;
wsk->next=usuwany->next;
free(usuwany);
} else
{
wsk=wsk->next;
}
}
}
void print(el_listy *lista)
{
el_listy *wsk=lista; /* 1 */
while( wsk != NULL ) /* 2 */
{
printf ("%u\n", wsk->liczba); /* 3 */
wsk = wsk->next; /* 4 */
} /* 5 */
}
int main()
{
int a;
printf("Podaj liczbe, ktora chcesz dodac na stos: ");
scanf("%d",&a);
first=push(first,a);
printf("Podaj liczbe, ktora chcesz dodac na stos: ");
scanf("%d",&a);
first=push(first,a);
printf("Podaj liczbe, ktora chcesz dodac na stos: ");
scanf("%d",&a);
first=push(first,a);
first=pop(first,a);
print(first);
return 0;
}