标题:关于C语言栈的问题
只看楼主
暗黑键盘
Rank: 1
等 级:新手上路
帖 子:3
专家分:9
注 册:2017-4-27
结帖率:0
 问题点数:0 回复次数:0 
关于C语言栈的问题
刚了解到栈 不知道咋做 有点懵
题目是修改下面的栈示例使它存储字符而不是整数。接下来,增加main函数,用来要求用户输入一串圆括号或花括号,然后指出它们之间的嵌套是否正确:
Enter parenteses and/or braces:((){}{()})  
Parenteses/braces are nested properly  
提示:读入左圆括号或左花括号时,把它们像字符一样压入栈中。当读入右圆括号或右花括号时,把栈顶的项弹出,并且检查弹出项是否是匹配的圆括号或花括号。(如果不是,那么圆括号或花括号嵌套不正确。)当程序读入换行符时,检查栈是否为空。如果为空,那么圆括号或花括号匹配;如果栈不为空(或者如果曾经调用过stack_underflow函数),那么圆括号或花括号不匹配。如果调用stack_underflow函数,程序显示信息Stack overflow,并且立刻终止。
下面是栈示例:
#include <stdbool.h>
#define STACK_SIZE 100//定义栈容量为100

int contents[STACK_SIZE];//定义数组用作栈
int top = 0;//定义并初始化栈顶指针为0

void make_empty (void)
{
    top = 0;//直接将栈顶指针置0
}
//函数作用 判断栈是否为空栈
bool is_empty (void)
{
    return top == 0;//返回top是否等于0
}
//函数作用 判断栈是否已满
bool is_full (void)
{
    return top == STACK_SIZE;//返回top是否等于STACK_SIZE
}
//向栈中压入一个元素 称为压栈
void push (int i)
{
    is (is_full))//如果栈已满的话  
        stack_overflow();//执行栈上溢操作  上溢表示已经超出了数组的范围
    else
    contents[top++] = i;//否则继续压入数据线 称为压栈 进栈 入栈
}
//弹出栈顶元素并返回
int pop (void)
{
    if (is_empty ())//如果栈为空
        stack_underflow ();//执行栈下溢操作
    else//否则出栈
        return contents[--top];//返回栈顶元素 然后将栈顶指针-1
}
搜索更多相关主题的帖子:  函数 括号 top void 
2018-04-08 20:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485860-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.374046 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved