数据结构C++版-栈
2024-10-03 00:26:24
一、概念
二、应用实例
1.进制转换
#include <stdlib.h>
#include <iostream>
#include <string> #include "MyStack.h"
#include "Coordinate.h"
using namespace std; #define BINARY 2
#define OCTONARY 8
#define HEXADECIMAL 16 void main ( )
{
//MyStack<int> s(30);
MyStack<char> s(); char num[]="0123456789ABCDEF"; int N=;
int mod=;
while (N!=)
{
mod=N%;
s.push(num[mod]);
N=N/;
} s.stackTraverse(false); /*
int elem=0; for (int i=s.stackLength()-1;i>=0;i--)
{
s.pop(elem);
cout<<num[elem];
}*/ /*while(!s.stackEmpty())
{
s.pop(elem);
cout<<num[elem];
}*/ system("pause"); }
2.括号匹配
MyStack<char> s(); //存放未匹配的括号
MyStack<char> s1(); //存放栈顶括号的另一半 char str[] = "([])["; //存放待匹配文本目标,要求无空格 e.g. [()()] ([]([]))
char current=; //当前括号需要匹配的另一半 for (int i=;i<strlen(str);i++)
{
if (current!=str[i])
{
s.push(str[i]);
switch(str[i])
{
case '[': //case 后面数据类型是int,单个字符会转换成其ASC码 if (current!=)
{
s1.push(current);
}
current=']';
break; case '(': if (current!=)
{
s1.push(current);
}
current=')';
break; default:
cout<<"括号不匹配."<<endl; //default后面语句可以注释掉,因为current不等于str[i]时str[i]就会入栈,第一个栈不为零匹配就会失败 } }
else
{
char elem;
s.pop(elem); if(!s1.pop(current))
{
current=;
}
}
} if (s.stackEmpty())
{
cout<<"括号匹配"<<endl;
}
else
{
cout<<"括号不匹配"<<endl;
} system("pause");
最新文章
- 检查PHP文件中是否含有bom的PHP函数
- 多线程完成socket
- 开启win7系统关闭日志分析
- linux服务器apache 一个IP,一个端口,建立多个网站的方法。
- iOS仿京东分类菜单实例实现
- AOJ - 2224 Save your cat(最小生成树)
- Android 内存溢出管理与测试
- .NET基础拾遗(3)字符串、集合和流3
- 先学习Oracle 11g的Automatic Diagnostic Repository新功能
- 一步一步学MySQL-一致性非锁定读和锁定读
- java中servletContextListener、httpSessionListener和servletRequestListener使用整理
- 关于linux上文件无法正确显示中文的情况解决
- MySQL 获得当前日期时间 函数【转】
- 学习笔记24—win10环境下python版libsvm的安装
- mongodb-参考其他
- yum安装jdk如何配置JAVA_HOME
- Winform下判断文件和文件夹是否存在
- Build step &#39;Execute Windows batch command&#39; marked build as failure
- linux:用户及文件权限管理
- 用input标签 文件,多文件上传