Реализация функций стека

Пробую реализовать базовые функции стека. Но как-то плохо получается.

   #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 ?


Ответы (0 шт):