小编Fra*_*ani的帖子

堆栈内容中保存的数据不断变化,无法增加

所以这是我的问题,我一直试图在过去的5个小时内解决这个问题,我有一个头文件,一个测试文件和一个交流源文件.我真的很想了解发生了什么,以及为什么我可以在将来避免这个问题.头文件声明了struct但没有定义它:

typedef struct Stack *StackP;

在我的源文件Stack.c中我定义了堆栈:

struct Stack
{
  int top;
  int capacity;
  int count;
  ItemT items;
};
Run Code Online (Sandbox Code Playgroud)

在哪里ItemT定义为char *

在测试文件中,调用是:

StackP stackPtr = newStack();

以及我对c源文件中的newStack函数所拥有的是:

StackP newStack(void) {
  struct Stack stack1;
  StackP stackPtr = &stack1;
  (stackPtr->items) = (ItemT)malloc(DEFAULT_CAPACITY*sizeof(ItemT));        

  (stackPtr->top) = -1;
  (stackPtr->capacity) = DEFAULT_CAPACITY;
  (stackPtr->count) = 0;    
  fprintf(stderr, "\nSuccesfully allocated memory to items...\n");

  return stackPtr;
}
Run Code Online (Sandbox Code Playgroud)

现在,我的推送功能是:

void pushStack(StackP stackPtr, ItemT item) {           
  if ((stackPtr->count) == (stackPtr->capacity)) {
    fprintf(stderr, "\nERROR: Full stack.\n");
  }
  else {
    stackPtr->items …
Run Code Online (Sandbox Code Playgroud)

c stack push peek

0
推荐指数
1
解决办法
45
查看次数

标签 统计

c ×1

peek ×1

push ×1

stack ×1