- 浏览: 72340 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 587今天测试了多线程并发计数的性能:结果测试性能为: 计 ... -
VELOCITY三种属性加载方式
2012-06-27 21:01 2286一、velocity默认的加载方式(文件加载方式) pac ... -
JHOTDRAW一个相当不错的JAVA绘制软件
2011-12-15 18:45 2271JHOTDRAW 是运用SWING与AWT开发的一款JAVA绘 ... -
如果你是学生,你还没毕业,一定要好好的学一下大学课程,必须的
2011-11-27 17:38 18422007年从学校步入 ... -
贴个SWING画的CUBE
2011-10-22 11:47 1061看了大牛儿们的SWING博客,画一个SWING界面玩儿玩儿,附 ... -
JHOTDRAW
2011-10-13 18:16 1198Jhotdraw是一个很不错 ... -
从原理上理解服务器
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 1647最近在应用服务器跑压力测试过程当中,出现无法创建线程的错误。在 ... -
.XML字符串和XML DOCUMENT的相互转换
2011-06-09 22:48 1568一、使用最原始的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 1328package com.hexun.sample; impo ...
相关推荐
### 经典表结构设计与多表关联设置详解 #### 一、引言 在数据库设计领域,合理的表结构设计是构建高效、可扩展数据库系统的基石。本文将围绕“我的经典表结构”这一主题,深入探讨如何进行有效的表结构设计,并...
在本案例中,我们有两个文件:`emp_dept表数据.sql` 和 `emp_dept表结构.sql`,它们分别提供了表的数据和结构信息。 首先,让我们详细了解一下"emp" 表。这个表通常包含公司员工的相关信息,例如: 1. **EMPNO**...
总的来说,这个压缩包提供了一个全面的学习和实践MySQL的机会,从基础的表结构创建到数据操作,再到高级的查询技巧,都是深入掌握MySQL所必需的知识点。通过实际操作这些SQL脚本,你将能够更好地理解和应用书中讲解...
主键是表结构中的一个重要概念,它是一个或一组字段,其值能唯一标识表中的每一行,确保数据的完整性。此外,外键用于建立不同表之间的关联,实现数据的一致性和参照完整性。 在压缩包中,"数据库系统概念(第七版...
本资源“MySQL表结构导出world.rar”是一个压缩包,旨在帮助用户方便地导出名为“world”的数据库的表结构。这个过程对于备份、迁移或共享数据库设计非常有用。 在使用这个压缩包之前,首先需要了解如何解压文件。...
总的来说,"数据结构原理与经典问题求解"这本书,配合源代码和勘误表,为学习者提供了一个全面了解和掌握数据结构及其应用的平台。无论你是初学者还是经验丰富的程序员,都可以从中受益,提升自己的编程和问题解决...
它选择一个基准值,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后对这两部分递归地进行快速排序。在平均情况下,快速排序的时间复杂度为O(n log n),但在最坏情况下(输入数组已排序或...
循环链表是链表的一种特殊形式,其最后一个元素的指针指向列表的开头,形成一个环状结构。这种结构在查找头尾节点时具有O(1)的时间复杂度,适合频繁的插入和删除操作。在选择线性表的存储结构时,应根据操作特性和...
同时,对于对数据结构感兴趣的非专业人士,这份资料也是一个很好的起点。 使用建议: 结合理论和实践:在学习的过程中,请结合算法代码和理论知识。尝试自己编写代码实现数据结构,并在遇到问题时参考提供的代码。...
本文件中,包含了Orcale的经典40题,仅供参考,希望能有热心的小伙伴,积极讨论,欢迎指出错误,或更好的解决方法~ 练习题的表结构和数据+PDF文档+SQL查询语句。 本来想免费的,结果设置不了免费,至少1分 0.0
例如,当我们需要快速查找一个元素时,可能首选散列结构;如果要对数据进行排序,可以选择快速排序、归并排序或堆排序等算法。理解这些数据结构和算法的工作原理,并能灵活运用,是成为一名优秀程序员的必备技能。 ...
1. **河内塔 (Towers of Hanoi)**: 这是一个经典的递归问题,通过三个柱子和若干个大小不一的圆盘,演示了如何在遵循特定规则(大盘子不能放在小盘子之上)的情况下,将所有圆盘从一个柱子移动到另一个柱子。...
《C++数据结构原理与经典问题求解》是一本深入探讨C++编程中数据结构理论与实践的权威著作。本书由左飞编写,旨在帮助读者理解数据结构的基础知识,并掌握如何利用C++来实现和解决实际问题。数据结构是计算机科学中...
【标题】"Falcon的管理...综上所述,这个压缩包对于正在学习数据结构和数据库管理的学生来说是一个宝贵的资源集合,它涵盖了理论知识、编程实践和数据库设计的各个方面,有助于提升编程技能和理解数据处理的底层原理。
例如,二叉搜索树用于快速查找,哈希表用于高效查找,而图数据结构则常用于表示网络和关系等复杂场景。 通过阅读这些教材,你还可以了解到抽象数据类型(ADT)的概念,它是数据结构理论的核心。ADT定义了一组操作和...
在经典题目中,我们可能需要实现二叉树的遍历(前序、中序、后序),查找、插入和删除节点,或者解决与二叉树相关的特性问题,比如判断一个树是否是对称的,计算高度,或找到最近的公共祖先。这些操作对于理解和优化...
本资源将详细介绍经典表关联与多表查询的目的、基本概念、语法结构、应用场景和注意事项。 目的: 经典表关联与多表查询的主要目的是掌握从多个表查询数据的基本知识,了解和学习外连接(out join)和内连接(self...
描述中的“对大家学习绝对有不小的帮助”,暗示了这个压缩包可能包含一系列经典的数据结构实现和算法实例,可以帮助学习者更好地理解和应用这些理论知识。通常,这样的资源会覆盖线性结构(如数组、链表)、树形结构...
本书的一个重要特点是在内容和章节编排上与1992年4月出版的《数据结构》第二版基本一致,但在新版中更加强调了抽象数据类型的概念。全书采用类似C语言的描述语言来表达数据结构和算法,这种描述方式考虑了C语言的...
根据提供的信息,我们可以详细解析与"emp,dept经典数据库练习表"相关的知识点,这包括了表结构设计、数据插入操作以及这些练习表在学习数据库管理中的应用价值。 ### 一、表结构设计 #### 1. **DEPT 表结构** - *...