Реализация функций стека
Пробую реализовать базовые функции стека. Но как-то плохо получается.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define N 10
struct docEdit
{
char text[20];
int StrNum;
};
struct Stack {
struct docEdit items[N];
int top;
};
void pushstack(struct Stack* st, struct docEdit myEvent1) {
if (st->top == N - 1) {
printf("Stack is full");
return;
}
st->items[++st->top] = myEvent1;
}
void popstack(struct Stack* st) {
if (st->top == -1) {
printf("Stack is empty");
return;
}
st->top--;
}
int emptystack(struct Stack* st) {
return st->top = 0;
}
int sizestack(struct Stack* st) {
return st->top;
}
(тип данных функции) top(struct Stack* st) {
return st->items[st->top];
}
int main() {
setlocale(LC_ALL, "");
struct Stack st;
st.top = -1;
struct docEdit myEvent1 = {"string 1", 1};
pushstack(&st, myEvent1);
popstack(&st);
return 0;
}
Два вопроса: почему пишет, что переменная st не инициализированная и какой тип данных нужно поставить у функцию top ?