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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作