#include <stdio.h>
#include<stdlib.h>
#include<string.h>
/*Dynamiczna lista jednokierunkowa-stos*/
typedef struct lista
{
int liczba;
struct elem *nastepny;
} lista;
/************************************************/
/*Funkcja dodajaca liczbe na stos*/
void push(lista **stos, int element)
{
lista* biezacy;
if((biezacy=(lista*)malloc(sizeof(lista)))==NULL)
return ;
else
{biezacy -> liczba=element;
biezacy->nastepny=*stos;
*stos=biezacy;
}
}
/*************************************************/
/*Funkcja zdejmująca element ze szczytu stosu*/
void pop(lista **stos,int element)
{
lista *tmp;
if(stos!=NULL)
{
tmp=*stos;
element=tmp->liczba;
*stos=tmp->nastepny;
free(tmp);
return ;
}
else
{
fprintf(stderr,"Blad brak danych\n");
}
}
/*************************************************/
/*Funkcja wyswietlajaca na wyjscie cały stos*/
void print(lista *stos)
{
if(stos==NULL)
printf("Na stosie nie ma zadnych liczb\n");
else
while (stos!=NULL)
{
printf("%d\n",stos->liczba);
stos=stos->nastepny;
}
}
/**************************************************/
/*Funkcja sprawdzająca czy stos nie jest pusty*/
void empty(lista *stos)
{
if(stos==NULL)
printf("Stos jest pusty\n");
else
printf("Stos nie jest pusty\n");
}
/**************************************************/
int main()
{
lista *stos=NULL;
char wybor[2]; /* jest jeszcze znak konca linii \0 */
int element=0;
printf("Dostepne operacje:\n ? - wyswietl liczby znajdujace sie na stosie\n p - dodaj liczbe na szczyt stosu\n # - usun liczbe ze szczytu stosu\n e - sprawdz czy stos jest pusty\n q - wyjscie z programu\n");
while(wybor[0]!='q')
{
printf("Twoj wybor: ");
scanf("%s",&wybor[0]);
switch(wybor[0])
{
case '?':
print(stos);
break;
case 'p':
printf("Podaj liczbe:");
scanf ("%d",&element);
push(&stos,element);
break;
case '#':
pop(&stos,element);
break;
case 'e':
empty(stos);
break;
}
}
printf("Program zakonczyl dzialanie\n");
return 0;
}
Ktoś wie czemu przy takich fragmentach kodu jak:
biezacy->nastepny=*stos;
*stos=tmp->nastepny;
stos=stos->nastepny;
pojawia mi się komunikat: Incompatible pointer types assigning to 'lista ' (aka 'struct lista') from 'struct elem *'
???????????