cXiaoLee
2019-04-27 12:09新手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条回答
为你推荐
- 请问如何实现利用指针方式实现将一个字符串中的非英文字符删除,并输出新字符串。(C语言)
- c语言
- 2个回答
- 删除指定字符(指针与字符串)
- c语言
- c++
- 1个回答
- 【c语言/链表】两个有序单链表合成为一个有序单链表,自己写的代码运行出错,求助
- c语言
- 1个回答
- 【问题描述】 编写一个程序,从键盘接收一个字符串(长度不超过20),采用插入排序,按照字符顺序从小到大进行排序,最后输出排序后的字符串。
- c语言
- 1个回答
- c语言不用函数实现strcmp()输入相同字符串时比较不正确
- c语言
- 1个回答