Mam takie zadanie. Napisz program, w którym zaimplementujesz stos na bazie tablicy. Liczbę elementów tablicy dobierz samodzielnie. Przetestuj tę implementację. Twój program powinien wykrywać sytuacje, kiedy stos jest pusty i kiedy jest pełny.
I mam taki kod:
#include <stdlib.h>
#include <stdio.h>
#define STACK_SIZE 4
int stack_array[STACK_SIZE];
int top = -1;
void push(int data){
if(top == STACK_SIZE - 1){
printf("Przeladowanie!");
return;
}
top=top+1;
stack_array[top] = data;
}
int pop(){
int value;
if(top == -1){
printf("Stos jest pusty");
exit(1);
}
value = stack_array[top];
top = top - 1;
return value;
}
int peek(){
if(top == -1){
printf("Stos jest pusty");
exit(1);
}
return stack_array[top];
}
void print(){
if(top == -1){
printf("Stos jest pusty\n");
return;
}
for(int i = top; i >= 0; i--){
printf("%d ", stack_array[i]);
}
printf("\n");
}
int main(){
int choice, data;
while(1){
printf("\n1. push\n"
"2. pop\n"
"3. wypisz wierzcholek stosu\n"
"4. wypisz wszytskie elementy stosu\n"
"5. koniec\n"
"Wybierz opcje: ");
scanf("%d", &choice);
switch(choice){
case 1:
printf("Wrzuc element na stos: ");
scanf("%d", &data);
push(data);
break;
case 2:
data = pop();
printf("Usuniety elemet ze stosu to: %d\n", data);
break;
case 3:
printf("na szczycie stosu jest %d", peek());
break;
case 4:
print();
break;
case 5:
exit(1);
default:
printf("Zly wybor");
}
}
return 0;
}
I teraz chce zamiast zmiennych globalnych użyć struktury:
struct stack{
int stack_array[STACK_SIZE];
int top;
}
Tylko nie wiem teraz jak ugryźć temat, chyba trzeba coś rzeźbić ze wskaźnikami...
I też prosił bym o ewentualne uwagi co do kodu :)