cXiaoLee 2019-04-27 12:09 采纳率: 0%
浏览 712

新手c语言的压栈与弹栈 写了一段代码压入字符串与弹出字符串 始终读不出来 不知道哪里出错了

//这是主函数
#include "stdio.h"
#include "stdlib.h"
#include "stack_array.h"

int main()
{
char *arr[] = {"a","b","c","d","e","f"};
STACK *stack = stack_create(20);

//压栈
while(!stack_full(stack))
{
    stack_pull(stack,*arr);
}

//弹栈
while(stack_emputy(stack))
{
    printf("%s\n",stack_pop(stack));
}
stack_destroy(stack);
return 0;

//这是栈函数
#include "stdio.h"
#include "stdlib.h"
#include "stack_array.h"

STACK *stack_create(int cap)
{

STACK *stack = (STACK*)malloc(sizeof(STACK));
stack->array = (char*)malloc(cap*sizeof(char));
stack->cap = cap;
stack->top = 0;
return stack;

}

void stack_destroy(STACK *stack)
{

free(stack->array);
free(stack);

}

//先判断栈满
int stack_full(STACK *stack)
{

if((stack->top)>=stack->cap)
{
    return 1;
}
else
{
    return 0;
}

}

//判断栈空
int stack_emputy(STACK *stack)
{

if(stack->top == 0)
{
    return 1;
}
else
{
    return 0;
}

}

//进行压栈
void stack_pull(STACK *stack,char *arr)
{

int num = 0;
stack->array[stack->top++] =arr[num];
num++;

}
//弹栈
int stack_pop(STACK *stack)
{

return stack->array[--stack->top];

}

//头文件
#ifndef STACK_ARRAY
#define STACK_ARRAY

typedef struct
{

char *array;
int cap;
int top;

}STACK;

//创建栈

STACK *stack_create(int cap);

//销毁栈

void stack_destroy(STACK *stack);

//压栈

void stack_pull(STACK *stack,char *arr);

//弹栈

int stack_pop(STACK *stack);

//判断栈是否已满

int stack_full(STACK *stack);

//判断栈是否为空

int stack_emputy(STACK *stack);

  • 写回答

2条回答 默认 最新

  • 天地之心online 2019-04-27 13:26
    关注

    弹栈那应该是非空栈,少了个‘!’

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog