如果我有这个堆栈抽象类型,我必须使用:
堆栈.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
堆栈.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.
}
非常感谢!
最佳答案
堆栈在stack.c中初始化
static unsigned numbElems = 0;
static void * elems[MAX_ELEMS];
这两行创建堆栈并将当前计数设置为 0
关于带 ADT 的 C 堆栈 - 抽象数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573658/