c - 错误: Syntax error before 'struct'

标签 c struct stack

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

Error: Syntax error before '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);

}

最佳答案

正如我所见,函数 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;
}

关于c - 错误: Syntax error before 'struct' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29507377/

相关文章:

c - 在C中将内存初始化为零是什么意思?

控制台 I/O : printf & scanf not occurring in expected order

C winsock2.h WS2_32.lib 链接 undefined reference

java - 自制堆栈等于方法

c - 从堆栈内存中删除结构

c - puts 和 gets 函数如何工作?

c - 非标准类型的 MPI 分布式读取

c - 具有指向下一个结构的指针的结构?

c - 内置函数的隐式声明不兼容 ‘malloc’

c++ - std::stack 是使用双链表实现的吗?