您的位置:首页 > 理论基础 > 数据结构算法

数据结构-栈的应用(进制转换,括号匹配)

2017-10-14 08:36 567 查看
进制转换目标效果:



进制转换功能代码:

//数制转换程序
void Conversion()
{
// TODO (#1#): 这里实现数制转换程序
printf("请输入十进制数:");
scanf("%d",&n);
while(n)
{
Push(s,n%8);
n/=8;
}
printf("\n该十进制对应的八进制数为:");
while(!StackEmpty(s))
{
Pop(s,x);
printf("%d",x);
}
printf("\n");
}


括号匹配目标效果:





括号匹配功能代码:

//检验括号匹配
void Match()
{
// TODO (#1#): 这里实现检验括号匹配的程序
printf("\n\n请输入括号表达式:");
char c_array[20];
int i=0;
scanf("%s",c_array);
int l=strlen(c_array);    //求字符数组长度
while(i<l&&i>=0)
{
switch(c_array[i])
{
case '{':
case '[':
case '(':
Push(s,c_array[i]);     //左括号入栈
break;
case '}':
Pop(s,x);
if(x!='{')
{
printf("\n匹配失败");
i=-2;
}
break;
case ']':
Pop(s,x);
if(x!='[')
{
printf("\n匹配失败");
i=-2;
}
break;
case ')':
Pop(s,x);
if(x!='(')
{
printf("\n匹配失败");
i=-2;
}
break;
}
i++;
}
if(i>0)
printf("\n匹配成功");
}


源码链接:点击打开链接

注意:
1.这里没有贴具体对栈操作的代码,是因为代码和上一篇博文栈操作的代码一样。
2.加一个小插曲,这里的括号匹配是英文括号匹配,中文括号会有乱码等问题,别问我怎么知道的,一脸懵逼.jpg。
3.源码中两个功能一起运行的,所以括号匹配输入字符串使用了scanf,使用gets会出现问题(上边进制转换带来的问题),但是如果单独作为一个功能时,gets也能正确运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: