错误:'struct'之前的语法错误

时间:2015-04-08 06:23:37

标签: c struct stack

我的代码基本上是用于制作/使用堆栈的函数。我几乎尝试了所有内容,但我不知道为什么我的程序显示此错误:

  

错误:' struct'

之前的语法错误
#include "stack.h"

#include <stdio.h>
#include <stdlib.h>
#define CAPACITY 128

struct stack_struct {
    ElemType items[CAPACITY];
    int top;
};


StackPtr stk_create(){
    StackPtr s = malloc(sizeof(struct stack_struct));

    s->top = -1;  // stack initially empty
    return s;
}

// TODO
StackPtr stk_clone(StackPtr s) {
  return NULL;  // temporary placeholder
}

void stk_free(StackPtr s) {
    free(s);
}

int stk_push(StackPtr s, ElemType val){
    if(s->top == CAPACITY - 1)
     struct stack_struct * temp;
    temp = (struct stack_struct*)malloc(sizeof(struct stack_struct));
    s->top++;
    s->items[s->top] = val;
    return 1;
}

ElemType stk_pop(StackPtr s){
    if(s->top == -1)
        abort();  // library function which terminates program!!!
    s->top--;
    return s->items[s->top+1];
}

int stk_is_full(StackPtr s){
    return s->top == CAPACITY-1;
}

int stk_is_empty(StackPtr s){
    return s->top == -1;
}

int stk_size(StackPtr s) {
    return s->top+1;
}

void stk_clear(StackPtr s){
    s->top = -1;
}

void stk_print(StackPtr s) {
    int i;
    printf("\n----TOP-----\n");

    for(i=s->top; i>=0; i--) {
        printf(FORMAT_STRING, s->items[i]);
    }
    printf("---BOTTOM---\n");
}

int main() {

    StackPtr sptr;

    sptr = stk_create();

    stk_push(sptr, 1.7);
    stk_push(sptr, 3.14);
    stk_print(sptr);

    stk_pop(sptr);

    stk_print(sptr);

    stk_free(sptr);

}

2 个答案:

答案 0 :(得分:0)

我可以看到,函数stack_push看起来应该是这样的

int stk_push(StackPtr s, ElemType val){
    if(stk_is_full(s))
       return -1; // stack already full, we couldn't push new elem
    s->top++;
    s->items[s->top] = val;
    return 1;
}

答案 1 :(得分:0)

我认为此行中的错误(源代码中的第35行):

struct stack_struct * temp;

。我们试试

typedef struct stack_struct * temp;

或更改声明struct

struct stack_struct {
ElemType items[CAPACITY];
int top;} stack; 

然后致电

stack* temp;
第35行