- 浏览: 70855 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
comsci:
大家加油,把中国自定义工作流的技术水平推行新的高峰。。。。。。 ...
JAVASCRIPT 画工作流 -
dqqmq:
我也刚做了个网页式的画工作流页面,因要配置流程节点界面等原因, ...
JAVASCRIPT 画工作流 -
sxpyrgz:
braveone 写道servlet也是使用单例模式,那么当多 ...
为什么要使用单例 -
braveone:
servlet也是使用单例模式,那么当多个用户请求时,是不是要 ...
为什么要使用单例 -
大海lb:
sxpyrgz 写道songbin0201 写道如果是我,一定 ...
如果你是学生,你还没毕业,一定要好好的学一下大学课程,必须的
最近在写一个比较复杂的业务程序,其中有个这样一张表,
1、它即可以实现每条记录之间的或者是所有记录上的部分区域的链式结构
2、它也可以实现两条记录间的与非关系统,
3、它还可以实现几条记录之间的优先级关系。括号语法。
4、它可以进行几条数据之间的并行操作.
现列出经典部分代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <script language="javascript"> // Array还有sort()、reverse()、splice(pos,count)--从数组的第pos位开始,删除count个元素//;splice(pos,count,"element1","element2")--替换或删除 check = function(){ return false; } //堆栈类 function Stack(){ this.stack = new Array(); } Stack.prototype.push = function(obj){ this.stack.push(obj); } Stack.prototype.pop = function(){ if(this.length()==0){ //alert("暂无元素"); return } return this.stack.pop(); } Stack.prototype.lastElement = function(){ if(this.length()==0){ //alert("暂无元素"); return } return this.stack[this.length()-1]; } Stack.prototype.length = function(){ return this.stack.length; } Stack.prototype.toString = function (){ return this.stack.toString(); } function checkBracket(objArray){ var bracketStack = new Stack(); var sb = new Array(); //存放每次括号中运算的结果 var result = ""; /*** * 如果判断的字符串不是以(开头,则进行,首未加括号 */ if(objArray[0]!="("){ for(var i = 0 ;i< objArray.length;i++){ objArray[objArray.length-i] = objArray[objArray.length-i-1]; } objArray[0] = "("; objArray[objArray.length]= ")"; } if(objArray[objArray.length-1]!=")"){ for(var i = 0 ;i< objArray.length;i++){ objArray[objArray.length-i] = objArray[objArray.length-i-1]; } objArray[0] = "("; objArray[objArray.length]= ")"; } for(var i=0; i<objArray.length; i++) { var temp = objArray[i] switch(temp){ case ')': debugger; sb = new Array(); var lastElement = bracketStack.lastElement(); if(lastElement == undefined){ alert("括号匹配有问题!"); return ; } //将第一个括号中的内容出栈 while(lastElement !="(" && bracketStack.length()>0){ bracketStack.pop(); sb.push(lastElement); lastElement = bracketStack.lastElement(); if(lastElement =="("){ bracketStack.pop(); } } if(bracketStack.length() == 0){ result = check(sb); break; }else{ bracketStack.push(check(sb)); } alert(sb.toString()); break; case '(': /** * 将左括号进栈 */ bracketStack.push(temp); break; default : //将非括号的存放到临时数组 bracketStack.push(temp); break; } } if(bracketStack.length()>0){ alert("括号匹配有误!!!!!"); return false; }else{ alert(result); } return true; } var obj1 = { logic: "or", value: 1, leftBracket :"((", rightBracket :"" } var obj2 = { logic: "and", value: 2, leftBracket :"", rightBracket :"" } var obj3 = { logic: "and", value: 3, leftBracket :"(", rightBracket :"" } var obj4 = { logic: "or", value: 4, leftBracket :"", rightBracket :")" } var obj5 = { logic: "or", value: 5, leftBracket :"(", rightBracket :"" } var obj6 = { logic: "and", value: 6, leftBracket :"", rightBracket :")" } var obj7 = { logic: "or", value: 7, leftBracket :"", rightBracket :"" } var obj8 = { logic: "or", value: 8, leftBracket :"", rightBracket :"))))" } var objArray = new Array(); objArray.push(obj1); objArray.push(obj2); objArray.push(obj3); objArray.push(obj4); objArray.push(obj5); objArray.push(obj6); objArray.push(obj7); objArray.push(obj8); var array = new Array(); for(var i = 0 ;i<objArray.length;i++){ var condition = objArray[i]; var leftBracket =condition.leftBracket; var rightBracket = condition.rightBracket; if(leftBracket!=""){ for(var j = 0 ;j<leftBracket.length;j++){ array.push("("); } } array.push(condition); if(rightBracket!=""){ for(var j = 0 ;j<rightBracket.length;j++){ array.push(")"); } } array.push(condition.logic); } array.pop(); var flag = false; for(var i = 0 ;i<array.length;i++){ var obj = array[i]; if (obj == "(" || obj == ")" || obj == "and" || obj =="or") { continue; }else{ if(obj.value == 5){ flag = true; } if(flag){ array[i] ="-"; } } }; var bracketFlag = checkBracket(array); </script> </head> <body> </body> </html>
JAVA代码
/**
*
* @param str
* @return
*/
public static String checkBracket(String str ){
Stack bracketStack = new Stack();
StringBuffer sb = new StringBuffer();
String result = "";
/***
* 如果判断的字符串不是以(开头,则进行,首未加括号
*/
if(str.charAt(0)!='('){
str = "("+str+")";
}
try{
for(int i=0; i<str.length(); i++)
{
char temp = str.charAt(i);
switch(temp){
case ')':
if(!result.equals("")){
result = check(result+sb.toString());
// result = sb.toString();
System.out.println(sb.toString());
}else{
result = check(sb.toString());
// result = sb.toString();
System.out.println(sb.toString());
}
sb = new StringBuffer();
String lastElement = bracketStack.lastElement().toString();
//将第一个括号中的内容出栈
while(!lastElement.equals("(")){
bracketStack.pop();
lastElement = bracketStack.lastElement().toString();
}
//将左括号出栈
bracketStack.pop();
/**
* 看左括号前面是否为(
* 如果不是则进行出栈
* 如果是,继续下一个字符串的读取
*/
lastElement = bracketStack.lastElement().toString();
if(!lastElement.equals("(")){
lastElement = (String)bracketStack.pop();
// System.out.println(lastElement+result);
sb.append(lastElement+result);
}
break;
case '(':
bracketStack.push(sb.toString());
sb = new StringBuffer();
bracketStack.push(temp);
break;
default :
sb.append(temp);
break;
}
}
}catch(Exception e){
System.out.println("括号不匹配");
}
Iterator it= bracketStack.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
// System.out.println("first ==========="+bracketStack.lastElement());
return result;
}
发表评论
-
SQL优化,间隙锁
2020-08-20 16:58 0间隙锁1: https://blog.csdn.net/wei ... -
爬数据
2020-05-30 18:43 0package com.jframe.market.util; ... -
java print
2018-11-07 09:20 0使用WORD编辑PDF,再使用 pdf adobe acrob ... -
安全知识
2018-03-27 08:45 0互联网安全需要注意问题: 1、CSRF安全 2、XSSF问题 ... -
Atomic LOCK synchronized性能测试
2016-06-26 19:36 550今天测试了多线程并发计数的性能:结果测试性能为: 计 ... -
VELOCITY三种属性加载方式
2012-06-27 21:01 2250一、velocity默认的加载方式(文件加载方式) pac ... -
JHOTDRAW一个相当不错的JAVA绘制软件
2011-12-15 18:45 2207JHOTDRAW 是运用SWING与AWT开发的一款JAVA绘 ... -
如果你是学生,你还没毕业,一定要好好的学一下大学课程,必须的
2011-11-27 17:38 17992007年从学校步入 ... -
贴个SWING画的CUBE
2011-10-22 11:47 1013看了大牛儿们的SWING博客,画一个SWING界面玩儿玩儿,附 ... -
JHOTDRAW
2011-10-13 18:16 1148Jhotdraw是一个很不错 ... -
从原理上理解服务器
2011-08-29 22:47 0服务器,顾名思义:就是提供服务的机器。例:邮件服务器,文件服务 ... -
对图形平台的一些概念的东西
2011-08-29 21:30 0开发与图形相关的系统,已经两年了,现从宏观与微观简单介绍一下 ... -
FUTURE及FutureTask理解
2011-06-30 14:49 0import java.util.concurrent.Cal ... -
GridBagConstraints 学习
2011-06-29 16:56 0package com.az.test; import ... -
JVM最大线程数计算方法
2011-06-11 13:22 1613最近在应用服务器跑压力测试过程当中,出现无法创建线程的错误。在 ... -
.XML字符串和XML DOCUMENT的相互转换
2011-06-09 22:48 1535一、使用最原始的javax.xml.parsers,标准的jd ... -
Java性能的十一个用法
2011-05-30 16:30 0private static Credit BaseCred ... -
java clone
2011-05-30 16:12 0☆什么是Clone ☆实现Shallow clone ... -
JAVA 位移
2011-05-30 14:03 0“<<”, “>>”, “>&g ... -
EventListenerList 实例
2011-05-22 22:31 1282package com.hexun.sample; impo ...
相关推荐
经典表结构设置。多表关联设置,最适合hibernate
链表经典数据结构程序链表经典数据结构程序链表经典数据结构程序链表经典数据结构程序
KINGDEE EAS6.0表结构查看,楼主经典整理,供下载者学习与参考
我得经典收藏,与大家分享。
数据结构原理与经典问题求解(源代码) + 勘误表
同时,对于对数据结构感兴趣的非专业人士,这份资料也是一个很好的起点。 使用建议: 结合理论和实践:在学习的过程中,请结合算法代码和理论知识。尝试自己编写代码实现数据结构,并在遇到问题时参考提供的代码。...
本文件中,包含了Orcale的经典40题,仅供参考,希望能有热心的小伙伴,积极讨论,欢迎指出错误,或更好的解决方法~ 练习题的表结构和数据+PDF文档+SQL查询语句。 本来想免费的,结果设置不了免费,至少1分 0.0
编写排序表的顺序存储形势下经典排序的算法
这里有《C++数据结构原理与经典问题求解》的下载链接(原文件190多M,太大不能传啊...)和pdf格式的勘误表。
DB Issue Trouble Shooting Guideline 很经典的数据结构资料
同时,对于对数据结构感兴趣的非专业人士,这份资料也是一个很好的起点。 使用建议: 结合理论和实践:在学习的过程中,请结合算法代码和理论知识。尝试自己编写代码实现数据结构,并在遇到问题时参考提供的代码。...
这个是C++数据结构原理与经典问题求解的勘误表。不是书。
高等教育数据结构经历例题程序 回文判断,括号配对,链表,树等。。。
结构化面试评分表(样表)招聘经典话术系列.doc
1. 设有n 个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k 的人就站出来。...这是一个使用循环链表的经典问题。因为要不断地出列,采用链表的存储形式能更好地模拟出列的情况。
经典数据结构与算法,喜欢的朋友赶紧收藏!
11.判断一个封闭图形是凹集还是凸集 12.Graham扫描法寻找凸包 数论: 1.x的二进制长度 2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法...
全书采用“数据结构原理描述→面向对象实现→解决经典问题→STL介绍”的基本架构,既强调理论的完整性,又突出实例引导的驱动...此外,本书还提供了近百个算法、数十个经典问题和十余个综合问题的完整实现代码近万余行
《C++数据结构原理与经典问题求解》是一部关于计算机科学与工程领域基础性核心课程——数据...此外,《C++数据结构原理与经典问题求解》还提供了近百个算法、数十个经典问题和十余个综合问题的完整实现代码近万余行。
数据结构中的经典算法 包括链表,堆栈,二叉树等等.另外还有一些经典数学问题的解法。