带有 ADT 的 C 堆栈 - 抽象数据类型

C stack with ADT - Abstract data type

如果我有必须使用的堆栈抽象类型:

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.

    }

非常感谢!

堆栈在stack.c

中初始化
static unsigned numbElems = 0;
static void * elems[MAX_ELEMS];

这两行创建您的堆栈并将当前计数设置为 0