Если у меня есть этот стек абстрактный тип, который я использовать:стек C с ADT - Абстрактный тип данных
stack.h:
#ifndef STACK_H
#define STACK_H
typedef enum { STACK_OK, STACK_EMPTY, STACK_FULL } StackStatut;
void pushToStack(void * x);
void * popFromStack(void);
unsigned countStack(void);
#endif
stack.c:
#include "stack.h"
#define MAX_ELEMS 200
static unsigned numbElems = 0;
static void * elems[MAX_ELEMS];
void pushToStack(void * x) {
elems[numbElems++] = x;
}
void * popFromStack(void) {
return elems[--numbElems];
}
unsigned countStack(void){
return numbElems;
}
Когда я прихожу в мой main.c, я знаю, что я должен включить stack.h, чтобы иметь возможность объявить указатель на сборку стека.
Дело в том, что я НЕ знаю, как действовать. Я знаю, как обращаться с ADT, когда он приходит в структуру, но теперь я полностью потерян.
если я «ве пусть говорят: main.c:
#include "stack.h"
int main() {
int i = 1;
int j = 2;
int k ; 3;
// At this point, i know that i need a void * prt
int * prt;
// This is the part where i dont know how to start my stack.
// if i do :
pushToStack(&i);
// i dont know how the number of elem in the stack will be incremented
// I dont know neither how to apply a statut to the stack.
}
Спасибо вам большое!
И я не могу изменить файлы заголовков и исходные. Мы не можем этого сделать. – Thapipo
Вам ничего не нужно начинать. Вам просто нужно вызвать pushToStack() и popFromStack() и countStack(). Все должно быть инициализировано –
Большое спасибо! Он работает очень хорошо, но я до сих пор не совсем понимаю, как работает программа, как я получаю 0 - вызов countStack, где он берет это число! Но большое спасибо! – Thapipo