如果我有这个我要使用的堆栈抽象类型:
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.
}
非常感谢!
答案 0 :(得分:0)
堆栈在stack.c中初始化
static unsigned numbElems = 0;
static void * elems[MAX_ELEMS];
这两行创建堆栈并将当前计数设置为0