C堆栈与ADT - 抽象数据类型

时间:2015-04-11 03:13:27

标签: c types stack abstract

如果我有这个我要使用的堆栈抽象类型:

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.

    }

非常感谢!

1 个答案:

答案 0 :(得分:0)

堆栈在stack.c中初始化

static unsigned numbElems = 0;
static void * elems[MAX_ELEMS];

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