使用c构建堆栈的问题

时间:2014-05-13 11:46:34

标签: c stack building

我非常喜欢编程而且我不理解为什么我的程序不能构建。我不知道问题究竟在哪里。对我而言似乎应该有效。这些大多是我在互联网上找到的例子。

有一些代码: 主:

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

//Pagrindinis kodas
int main() {
   push(*s, 15);
   push(*s, 4);
   push(*s, 18);
   printf("%d",s->data[0]);
   system("PAUSE");
   return 0
}

Mod.c:

#define DEBUG 0
#include<stdio.h>
#include"mod.h"

//------------------------------------------------------------------------------
void push(struct Stack *s, int value)
{
  if (s->size >= MAX_DATA - 1)
  {
    #if DEBUG
      printf("Elementas nepridetas. Neuztenka masyve vietos.\n");
    #endif
  }
  else
  {
    s->data[s->size] = value;
    s->size++;
    #if DEBUG
      printf("Pridetas elementas.\n");
    #endif
  }
}

//------------------------------------------------------------------------------
int pop(struct Stack *s)
{
  if (s->size > 0)
  {
    #if DEBUG
      printf("ispopintas elementas.\n");
    #endif
    return s->data[s->size] = 0;
  } else {
    s->data[s->size] = 0;
    s->size--;
  }

}

Mod.h:

#include <stdio.h>
#include <stdlib.h>
#ifndef MOD_H_INCLUDED
#define MOD_H_INCLUDED

#define MAX_DATA 30

typedef struct Stack {
  int data[MAX_DATA];
  int size;
} Stack;

// This function adds element to the end of the structure.
void push(struct Stack *s, int value);

// This function removes element from the end of the structure.
int pop(struct Stack *s);
//int pop(struct Stack *s)

#endif // MOD_H_INCLUDED

为什么它不构建的任何建议?

1 个答案:

答案 0 :(得分:1)

您需要声明Stack类型的变量。

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

//Pagrindinis kodas
int main() {
   Stack *s = calloc(sizeof(Stack), 1);  // calloc allocates memory and sets all bits to 0.
   push(s, 15);  // No * needed here. s is already a Stack* and the function expects a Stack*
   push(s, 4);
   push(s, 18);
   printf("%d",s->data[0]);
   system("PAUSE");
   return 0
}

可能会有更多错误,但这应该可以解决Main的编译问题。