Cześć szukałęm w necie odpowiedzi ale wszystkie sa z c++ a nie c (przynajmniej ja te tylko widziałem:)) a poniewaz jestem początkujacy to pisze tu.
pomózcie prosze rozwiazac mi ten program
Zaimplementować stos z użyciem tablic
* dane mają być przechowywane w tablicy w porządku LIFO
* zmienna będąca szczytem stosu wskazuje na ostatni element w tablicy
* po przepełnieniu tablicy należy utworzyć tablicę dwa razy większą, a następnie przepisać do niej wszystkie elementy
* do przydzielania, zwalniania i kopiowania tablicy należy użyć funkcji z instrukcji
* napisać funkcję do:
o dodawania elementów,
o zdejmowania elementów
o czyszczenia stosu
#include <stdio.h>
int pop (int *a,int index)
{
int tmp;
printf ("powiedz jaka liczbe chcesz dodac na stos\n");
scanf ("%i",&tmp);
a[index]=tmp;
return(a);
}
int push (int *a,int index)
{free(int*a[index])
}
int main()
{
int menu,show,index=-1;
int *a=(int*)calloc(3,sizeof(int));
do
{ printf("liczba elementow stosu %i\n",index+1);
printf ("\n");
printf ("powiedz co chcesz zrobic\n0-zakonczyc\n1-dodac dana do tablicy\n2-zobaczyc wartosci stosu\n3- usunac ostatli element stosu\nwybieram: ");
scanf ("%i",&menu);
if (menu==1)
{ index++;
pop (a,index);
}
if (menu==2)
{ show=index;
printf ("znak w naszej tablicy to: ");
for (show=0;show<index+1;show++)
{ printf ("%i, ",a[show]);
}
if (menu==3)
{
pop (a,index);
index--;
}
}
}
while (menu!=0);
}
na razie napisałem tyle i się zaciąłem mam pytanie dlaczego mimo że alokuje oamięć na 3 elementy (calloc) to jak nawet dodam 4 to nie wychodzi z błedem tylko dzalej nie powinien chyba dodac? w takim razie jak mam zdjąc element ze stosu (nie wiem bo zwalnianie pamieci też źle robie (f.free) a co najgorsze skoro tablica sie ciagle rozszerza to jak ma się ona przepełnić by jej zawartość skopiować do drugiej większej??