C中的Impementation Stack

时间:2017-03-17 15:03:17

标签: c pointers struct stack

我必须在C中实现堆栈结构,但是当我分配“pila = initialize_stack();”时,此代码在main中失败。为什么? 我如何为这个实现做或者如果这个代码完全错误怎么能在C中实现堆栈?

#include <stdio.h>
#include <stdlib.h>

#define MAX 100
//Define Struct
struct Stack {
    int dim;
    int array[MAX];
};

//Prototype Function
struct Stack inizialize_stack();        //inizialize a new empty Stack
void push(struct Stack pila, int num);  //insert element in Stack
int pop(struct Stack pila);             //extract element out of Stack
void printStack(struct Stack pila);     //Print Element in Stack

int main(int argc, char **argv){
    struct Stack pila; 
    pila =  inizialize_stacK();
    push(pila, 10);
    push(pila, 13);
    printStack(pila);
    return 0;

}

struct Stack inizialize_stack(){
    struct Stack pile;
    pile.dim = 0;
    return pile;
}
}

编译器会生成以下错误消息:

/TestStack.c:20:7: error: assigning to 'struct Stack' from incompatible type 'int' pila = inizialize_stacK()

1 个答案:

答案 0 :(得分:1)

你有一个拼写错误,这是一个值得关注的问题但是

pila = inizialize_stacK();
                   /* ^ should be lower case */

您看,错误消息不是未定义标识符错误,因为编译器正在使用隐式函数声明并且它假定未声明的函数返回int,这就是错误消息显示不兼容的分配的原因。

强制你的编译器使用最近的标准,从开始这应该是一个不同的错误,让你知道发生了什么,即让你发现错字。