导航:首页 > 编程语言 > 数据结构java试题

数据结构java试题

发布时间:2022-08-16 17:15:23

A. 一道java数据结构编程题。

/**
*四则运算表达式计算
*@authorpenli
*
*/
publicclassArithmetic{
publicstaticvoidmain(Stringargs[]){
System.out.println(arithmetic("2.2+((3+4)*2-22)/2*3.2"));
}
publicstaticdoublearithmetic(Stringexp){
Stringresult=parseExp(exp).replaceAll("[\[\]]","");
returnDouble.parseDouble(result);
}
/**
*解析计算四则运算表达式,例:2+((3+4)*2-22)/2*3
*@paramexpression
*@return
*/
publicstaticStringparseExp(Stringexpression){
//StringnumberReg="^((?!0)\d+(\.\d+(?<!0))?)|(0\.\d+(?<!0))$";
expression=expression.replaceAll("\s+","").replaceAll("^\((.+)\)$","$1");
StringcheckExp="\d";
StringminExp="^((\d+(\.\d+)?)|(\[\-\d+(\.\d+)?\]))[\+\-\*\/]((\d+(\.\d+)?)|(\[\-\d+(\.\d+)?\]))$";
//最小表达式计算
if(expression.matches(minExp)){
Stringresult=calculate(expression);

returnDouble.parseDouble(result)>=0?result:"["+result+"]";
}
//计算不带括号的四则运算
StringnoParentheses="^[^\(\)]+$";
StringpriorOperatorExp="(((\d+(\.\d+)?)|(\[\-\d+(\.\d+)?\]))[\*\/]((\d+(\.\d+)?)|(\[\-\d+(\.\d+)?\])))";
StringoperatorExp="(((\d+(\.\d+)?)|(\[\-\d+(\.\d+)?\]))[\+\-]((\d+(\.\d+)?)|(\[\-\d+(\.\d+)?\])))";
if(expression.matches(noParentheses)){
Patternpatt=Pattern.compile(priorOperatorExp);
Matchermat=patt.matcher(expression);
if(mat.find()){
StringtempMinExp=mat.group();
expression=expression.replaceFirst(priorOperatorExp,parseExp(tempMinExp));
}else{
patt=Pattern.compile(operatorExp);
mat=patt.matcher(expression);

if(mat.find()){
StringtempMinExp=mat.group();
expression=expression.replaceFirst(operatorExp,parseExp(tempMinExp));
}
}
returnparseExp(expression);
}
//计算带括号的四则运算
StringminParentheses="\([^\(\)]+\)";
Patternpatt=Pattern.compile(minParentheses);
Matchermat=patt.matcher(expression);
if(mat.find()){
StringtempMinExp=mat.group();
expression=expression.replaceFirst(minParentheses,parseExp(tempMinExp));
}
returnparseExp(expression);
}
/**
*计算最小单位四则运算表达式(两个数字)
*@paramexp
*@return
*/
publicstaticStringcalculate(Stringexp){
exp=exp.replaceAll("[\[\]]","");
Stringnumber[]=exp.replaceFirst("(\d)[\+\-\*\/]","$1,").split(",");
BigDecimalnumber1=newBigDecimal(number[0]);
BigDecimalnumber2=newBigDecimal(number[1]);
BigDecimalresult=null;

Stringoperator=exp.replaceFirst("^.*\d([\+\-\*\/]).+$","$1");
if("+".equals(operator)){
result=number1.add(number2);
}elseif("-".equals(operator)){
result=number1.subtract(number2);
}elseif("*".equals(operator)){
result=number1.multiply(number2);
}elseif("/".equals(operator)){
result=number1.divide(number2);
}

returnresult!=null?result.toString():null;
}
}

B. 求数据结构(JAVA版)实验树和二叉树题目答案

/**
* @param args
之前在大学的时候写的一个二叉树算法,运行应该没有问题,就看适不适合你的项目了 */
public static void main(String[] args) {

BiTree e = new BiTree(5);
BiTree g = new BiTree(7);
BiTree h = new BiTree(8);
BiTree l = new BiTree(12);
BiTree m = new BiTree(13);
BiTree n = new BiTree(14);
BiTree k = new BiTree(11, n, null);
BiTree j = new BiTree(10, l, m);
BiTree i = new BiTree(9, j, k);
BiTree d = new BiTree(4, null, g);
BiTree f = new BiTree(6, h, i);
BiTree b = new BiTree(2, d, e);
BiTree c = new BiTree(3, f, null);
BiTree tree = new BiTree(1, b, c);
System.out.println("递归前序遍历二叉树结果: ");
tree.preOrder(tree);
System.out.println();
System.out.println("非递归前序遍历二叉树结果: ");
tree.iterativePreOrder(tree);
System.out.println();
System.out.println("递归中序遍历二叉树的结果为:");
tree.inOrder(tree);
System.out.println();
System.out.println("非递归中序遍历二叉树的结果为:");
tree.iterativeInOrder(tree);
System.out.println();
System.out.println("递归后序遍历二叉树的结果为:");
tree.postOrder(tree);
System.out.println();
System.out.println("非递归后序遍历二叉树的结果为:");
tree.iterativePostOrder(tree);
System.out.println();
System.out.println("层次遍历二叉树结果: ");
tree.LayerOrder(tree);
System.out.println();
System.out.println("递归求二叉树中所有结点的和为:"+getSumByRecursion(tree));
System.out.println("非递归求二叉树中所有结点的和为:"+getSumByNoRecursion(tree));

System.out.println("二叉树中,每个节点所在的层数为:");
for (int p = 1; p <= 14; p++)
System.out.println(p + "所在的层为:" + tree.level(p));
System.out.println("二叉树的高度为:" + height(tree));
System.out.println("二叉树中节点总数为:" + nodes(tree));
System.out.println("二叉树中叶子节点总数为:" + leaf(tree));
System.out.println("二叉树中父节点总数为:" + fatherNodes(tree));
System.out.println("二叉树中只拥有一个孩子的父节点数:" + oneChildFather(tree));
System.out.println("二叉树中只拥有左孩子的父节点总数:" + leftChildFather(tree));
System.out.println("二叉树中只拥有右孩子的父节点总数:" + rightChildFather(tree));
System.out.println("二叉树中同时拥有两个孩子的父节点个数为:" + doubleChildFather(tree));
System.out.println("--------------------------------------");
tree.exChange();
System.out.println("交换每个节点的左右孩子节点后......");
System.out.println("递归前序遍历二叉树结果: ");
tree.preOrder(tree);
System.out.println();
System.out.println("非递归前序遍历二叉树结果: ");
tree.iterativePreOrder(tree);
System.out.println();
System.out.println("递归中序遍历二叉树的结果为:");
tree.inOrder(tree);
System.out.println();
System.out.println("非递归中序遍历二叉树的结果为:");
tree.iterativeInOrder(tree);
System.out.println();
System.out.println("递归后序遍历二叉树的结果为:");
tree.postOrder(tree);
System.out.println();
System.out.println("非递归后序遍历二叉树的结果为:");
tree.iterativePostOrder(tree);
System.out.println();
System.out.println("层次遍历二叉树结果: ");
tree.LayerOrder(tree);
System.out.println();

System.out.println("递归求二叉树中所有结点的和为:"+getSumByRecursion(tree));
System.out.println("非递归求二叉树中所有结点的和为:"+getSumByNoRecursion(tree));

System.out.println("二叉树中,每个节点所在的层数为:");
for (int p = 1; p <= 14; p++)
System.out.println(p + "所在的层为:" + tree.level(p));
System.out.println("二叉树的高度为:" + height(tree));
System.out.println("二叉树中节点总数为:" + nodes(tree));
System.out.println("二叉树中叶子节点总数为:" + leaf(tree));
System.out.println("二叉树中父节点总数为:" + fatherNodes(tree));
System.out.println("二叉树中只拥有一个孩子的父节点数:" + oneChildFather(tree));
System.out.println("二叉树中只拥有左孩子的父节点总数:" + leftChildFather(tree));
System.out.println("二叉树中只拥有右孩子的父节点总数:" + rightChildFather(tree));
System.out.println("二叉树中同时拥有两个孩子的父节点个数为:" + doubleChildFather(tree));
}
}

C. 数据结构(Java)》在线作业一

1:B,2:b,3:b,4:b
,5:b,6:a,7:b,8:a
,9:b,10:a,11:b
12:b,13:b,14:a

不解释、保守正确10题以上。

D. 求一些JAVA数据结构的试题及答案解析

1 下列数据结构中,能用二分法进行查找的是__A____。
A、顺序存储的有序线性表 B、线性链表 C、二叉链表 D、有序线性链表 解析:二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。 2 在软件设计中,不属于过程设计工具的是__D____。 A、PDL(过程设计语言) B、PAD图 C、N-S图 D、DFD图 解析:软件设计工具包括:程序流程图、N-S、PAD、HIPO,判定表,PDL(伪码)。而DFD(数据流图)属于结构化分析工具。
3 在switch(expression)语句中,expression的数据类型不能是__A____。 A、double B、char C、byte D、short
解析:表达式expression只能返回这个几种类型的值:int、byte、short和char。多分支语句把表达式返回的值依次与每个case子句中的值相比较,如果遇到匹配的值,则执行该case子句后的语句序列。
4 下列叙述中,错误的是__D____。
A、父类不能替代子类 B、子类能够替代父类 C、子类继承父类 D、父类包含子类 5 通过继承实现代码复用:
Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法,子类可以重写父类的方法,及命名与父类同名的成员变量。 子类通过隐藏父类的成员变量和重写父类的方法,把父类的状态和行为改变为自身的状态和行为。注意:子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。
由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。
java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。
6 自定义表格类中的model部分应实现的接口是___A___。
A、AbstractTableModel B、JTable C、TableModel D、TableModelable 7 下列代码中,将引起编译错误的行是__B____。 1)public class Exercise{
2) public static void main(String args[]){ 3) float f=0.0; 4) f+=1.0; 5) } 6) }
A、第2行 B、第3行 C、第4行 D、第6行
解析:float定义变量赋值时,需要在数值后面加f以标识它为浮点型,让系统知道该给它精确到多少位。

E. 两道java数据结构题~~

我没有时间写不过告诉你算法吧
1.栈是后入先出,队列是先入先出,那么两个栈,两次LIFO之后不是就是先入先出嘛
2.链表两个域,那么先存储头指针所指,再用前后两个引用变量进行反向赋值

F. 9道用java语言描述的数据结构编程题,请求给予详细解答。

直接把原题贴上来要求答案的,BS之...........

G. java数据结构二叉树引文试题求解

a)从根结点开始循环调用rightSubtree,直到isEmpty为true,此时得到的结点为最大植。
b)先序遍历整个BST,将所有leftSubtree和rightSubtree为empty的结点进行记数,最后可以得到所有叶子结点数。
做作业还是要自己动手好。

H. 用java编写一个数据结构的题!

线性表跟是不是数组没关系啊。。。栈和队列都是线性表吧。。不太懂你的意思。。
public class SeqList {
public static void main(String[] args) {
int[] a = new int[]{1,2,3,4,5,6,7};
int[] b = new int[]{3,5,8,9};
int[] c = new int[a.length + b.length];
new SeqList().seqListMerge(a, b, c);
}

public void seqListMerge(int[] a, int[] b, int[] c){
//i为数组a的计数器
int i = 0;
//j为数组b的计数器
int j = 0;
//k为数组c的计数器
int k = 0;
//判断两个数组长度,当一个先用完的时候推出循环
while(i < a.length && j < b.length){
if(a[i] > b[j]){
c[k] = b[j];
k++;
j++;
}else{
c[k] = a[i];
k++;
i++;
}
}
//如果a数组先到结尾,那么把b数组的剩下的值拼到c里
if( i == a.length){
while(j < b.length){
c[k] = b[j];
k++;
j++;
}
}
//如果b数组先到结尾,那么把a数组的剩下的值拼到c里
if(j == b.length){
while(i < a.length){
c[k] = a[i];
k++;
i++;
}
}

for(int p : c){
System.out.println(p);
}
}
}

阅读全文

与数据结构java试题相关的资料

热点内容
pythonclass使用方法 浏览:222
移动加密软件去哪下载 浏览:281
php弹出alert 浏览:207
吉林文档课件加密费用 浏览:131
传感器pdf下载 浏览:284
随车拍app绑定什么设备 浏览:897
方维团购系统源码 浏览:991
linux反弹shell 浏览:159
打印机接口加密狗还能用吗 浏览:301
二板股票源码 浏览:448
度人经pdf 浏览:902
怎么配置android远程服务器地址 浏览:960
java程序员看哪些书 浏览:943
什么app可以免费和外国人聊天 浏览:797
pdf手写笔 浏览:182
别永远伤在童年pdf 浏览:990
爱上北斗星男友在哪个app上看 浏览:421
主力散户派发源码 浏览:671
linux如何修复服务器时间 浏览:61
荣县优途网约车app叫什么 浏览:479