「算法与数据结构JAVA题」算法与数据结构java题目及答案
今天给各位分享算法与数据结构JAVA题的知识,其中也会对算法与数据结构java题目及答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、JAVA数据结构与算法
- 2、帮忙做个关于数据结构与算法的题(用java语言描述),谢谢!
- 3、java(算法与数据结构)tree
- 4、Java 与 算法+数据结构 (100分)
- 5、java(树的内容)算法与数据结构
- 6、java数据结构与算法分析
JAVA数据结构与算法
给你写了答案如下,有问题再追问。
B
A
C
确切性
3
infexOf
队头指针指向队尾
对
对
顺序表:查找方便,但插入困难;
链表:查找困难,但插入方便。
// 最大值
public static int getMax(int n, int[] arr) {//n是数组最后一个元素的index
if(n == 0)
return arr[0];
if(arr[n] getMax(n - 1, arr))
return arr[n];
return getMax(n - 1, arr);
}
// 平均值
public static int getAverage(int n, int[] arr) {//n是数组最后一个元素的index
if(n == 1)
return arr[0];
return (arr[n] + getAverage(n - 1, arr) * (n - 1)) / n;
}
//删除节点
public static Node rmNode(Node head, Node node) {
Node temp = head;
while(temp.next != null) {
if(temp.next == node) {
temp.next = node.next;
break;
}
else
temp = temp.next;
}
return head;
}
// 数组元素逆置
public static int[] inverseArray(int[] arr) {
int start = 0;
int end = arr.length - 1;
for(; start arr.length / 2; start++, end--) {
int temp = arr
今天给各位分享算法与数据结构JAVA题的知识,其中也会对算法与数据结构java题目及答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
;arr
今天给各位分享算法与数据结构JAVA题的知识,其中也会对算法与数据结构java题目及答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
= arr关于算法与数据结构JAVA题和算法与数据结构java题目及答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
;arr
关于算法与数据结构JAVA题和算法与数据结构java题目及答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
= temp;}
return arr;
帮忙做个关于数据结构与算法的题(用java语言描述),谢谢!
题目只提供了isPresent方法的spec,没有讲其他的,尤其是insert方法,参数是什么,是否需要多个重载?是在指定位置插入呢,还是怎样?remove方法也是,是根据元素删除呢,还是根据下标删除?另外,这个题目就是自己写一个ArrayList,楼主要是不会的话,可以自己参考JDK中java.util.ArrayList类的实现
java(算法与数据结构)tree
代码实现[一]部分
package ChapterEight;
class Tree {
class Node {
public long value;
public Node leftChild;
public Node rightChild;
public Node(long value) {
this.value = value;
leftChild = null;
rightChild = null;
}
}
public Node root;
public Tree() {
root = null;
}
// 向树中插入一个节点
public void insert(long value) {
Node newNode = new Node(value);
// 树是空的
if (root == null)
root = newNode;
else {
Node current = root;
Node parentNode;
while (true) {
parentNode = current;
if (value current.value) {
current = current.leftChild;
// 要插入的节点为左孩子节点
if (current == null) {
parentNode.leftChild = newNode;
return;
}
} else {
// 要插入的节点为右孩子节点
current = current.rightChild;
if (current == null) {
parentNode.rightChild = newNode;
return;
}
}
}
}
}
// 先续遍历树中的所有节点
public void preOrder(Node currentRoot) {
if (currentRoot != null) {
System.out.print(currentRoot.value + " ");
preOrder(currentRoot.leftChild);
preOrder(currentRoot.rightChild);
}
}
// 中续遍历树中的所有节点
public void inOrder(Node currentNode) {
if (currentNode != null) {
inOrder(currentNode.leftChild);
System.out.print(currentNode.value + " ");
inOrder(currentNode.rightChild);
}
}
// 后续遍历树中的所有节点
public void postOrder(Node currentNode) {
if (currentNode != null) {
postOrder(currentNode.leftChild);
postOrder(currentNode.rightChild);
System.out.print(currentNode.value + " ");
}
}
public void traverse(int traverseType) {
switch (traverseType) {
case 1:
preOrder(root);
break;
case 2:
inOrder(root);
break;
case 3:
postOrder(root);
break;
default:
break;
}
// 依据树节点的值删除树中的一个节点
public boolean delete(int value) {
// 遍历树过程中的当前节点
Node current = root;
// 要删除节点的父节点
Node parent = root;
// 记录树的节点为左孩子节点或右孩子节点
boolean isLeftChild = true;
while (current.value != value) {
parent = current;
// 要删除的节点在当前节点的左子树里
if (value current.value) {
isLeftChild = true;
current = current.leftChild;
}
// 要删除的节点在当前节点的右子树里
else {
isLeftChild = false;
current = current.rightChild;
}
// 在树中没有找到要删除的节点
if (current == null)
return false;
}
// 要删除的节点为叶子节点
if (current.leftChild == null current.rightChild == null) {
// 要删除的节点为根节点
if (current == root)
root = null;
// 要删除的节点为左孩子节点
else if (isLeftChild)
parent.leftChild = null;
// 要删除的节点为右孩子节点
else
parent.rightChild = null;
}
// 要删除的节点有左孩子节点,没有右孩子节点
else if (current.rightChild == null) {
// 要删除的节点为根节点
if (current == null)
root = current.leftChild;
// 要删除的节点为左孩子节点
else if (isLeftChild)
parent.leftChild = current.leftChild;
// 要删除的节点为右孩子节点
else
parent.rightChild = current.leftChild;
}
// 要删除的节点没有左孩子节点,有右孩子节点
else if (current.leftChild == null) {
// 要删除的节点为根节点
if (current == root)
root = root.rightChild;
// 要删除的节点为左孩子节点
else if (isLeftChild)
parent.leftChild = current.rightChild;
// 要删除的节点为右孩子节点
else
parent.rightChild = current.rightChild;
}
// 要删除的接节点既有左孩子节点又有右孩子节点
else {
Node successor = getSuccessor(current);
// 要删除的节点为根节点
if (current == root)
root = successor;
// 要删除的节点为左孩子节点
else if (isLeftChild)
parent.leftChild = successor;
// 要删除的节点为右孩子节点
else
parent.rightChild = successor;
}
return true;
}
// 找到要删除节点的替补节点
private Node getSuccessor(Node delNode) {
// 替补节点的父节点
Node successorParent = delNode;
// 删除节点的替补节点
Node successor = delNode;
Node current = delNode.rightChild;
while (current != null) {
// successorParent指向当前节点的上一个节点
successorParent = successor;
// successor变为当前节点
successor = current;
current = current.leftChild;
}
// 替补节点的右孩子节点不为空
if (successor != delNode.rightChild) {
successorParent.leftChild = successor.rightChild;
successor.rightChild = delNode.rightChild;
}
return successor;
}
}
public class TreeApp {
public static void main(String[] args) {
Tree tree = new Tree();
tree.insert(8);
tree.insert(50);
tree.insert(45);
tree.insert(21);
tree.insert(32);
tree.insert(18);
tree.insert(37);
tree.insert(64);
tree.insert(88);
tree.insert(5);
tree.insert(4);
tree.insert(7);
System.out.print("PreOrder : ");
tree.traverse(1);
System.out.println();
System.out.print("InOrder : ");
tree.traverse(2);
System.out.println();
System.out.print("PostOrder : ");
tree.traverse(3);
System.out.println();
System.out.println(tree.delete(7));
System.out.print("PreOrder : ");
tree.traverse(1);
System.out.println();
System.out.print("InOrder : ");
tree.traverse(2);
System.out.println();
System.out.print("PostOrder : ");
tree.traverse(3);
System.out.println();
}
}
Java 与 算法+数据结构 (100分)
说数据结构没用那是不可能的,但是要看你做什么了。
比如说你要血java,如果你想搞网站方面的话就简单了。
数据结构基本可以不用学,因为在web应用中,能用到的算法的地方少之又少,几乎就那么几个,想记不住都难。
但是如果你要往软件方面和手软方面发展的话就要学一部分了,但是这东西学是学不到的,能学到的只不过是思路,到时候自己发挥一下,想个算法就行了,算法这东西说难不难,难的东西有,但是没有你能用到的。
像你这样的情况我想说两点:
首先,说你想从事算法类的工作,那么选择什么样的语言都是一样的,算法肯定有,但是用到的都不多。刚进公司的时候一般是用不到算法的,因为算法都是别人想的,你也许有好的算法,但是别人不一定采用,但是你的算法基础不要丢掉,因为等你当了项目经理后这个是必不可少的。
其次,你要知道,在学计算机的路上,很少有人能学什么就做什么,大家都在被社会潮流推动,想要不掉队就只能随波逐流。因为毕竟我们都不想一辈子写代码。大家都是拿这东西做个跳板。
学java的路很长,但是也很有趣,希望你能学好。我想以你的算法基础,以后想成为专业精英不是问题。加油吧。
java(树的内容)算法与数据结构
其实有两种方式:
第一种就是递归 就像现在比较老的树形菜单。这种方式应该string类型应该是存不了的。就是自定义一个类型A 里面有一个成员变量 listA。 这种结构就是list里面嵌套list,你有多少级就有多少层。
第二种其实要做处理,就是把原数据按一定规则排序放到一个list里面,这里面不会再嵌套list。list排完序就如你的效果图一样。第一个 一级节点 》》其子节点;然后第二个一级节点》》其子节点,etc。 但是这种结构要有存的时候要循环一遍排成上述的顺序,取的时候还需要判断哪个是下一个不同级节点的开始。
js前台展示比较简单,根据父id直接添加就行了,原数据什么都不用做。但是java里这种方式不行。
java数据结构与算法分析
于之前面试android的时候考到了很多关于java的知识,所以这次重温数据结构知识就打算用java来学习,毕竟android是以java为基础的,而且我现在学习的j2ee架构也是以java为基础的。
java中的类就是对现实世界的对象的一种抽象,例如人就是一个类别,人有名字,联系电话,住址等成员属性,人拥有说话,吃饭,走路等成员方法。类就是这样,定义了一种对象,它有什么,会做什么。
继承——子类就是父类的一种特定类别。例如学生就是人的子类,学生属于人,是特定的一类人。所以我们让学生继承人,这样学生可以拥有人的属性和方法,也就是说,学生也有了名字,联系电话,住址等成员属性,拥有说话,吃饭,走路等成员方法。但是学生还有特定的一些方法(读书,上课),或者特定的一些属性(学号,年级),这些可以添加在子类中。
因为每个子类都属于父类,例如每个学生都属于人,所以可以用父类来引用子类的对象:People p = new Student();反过来不行。
java中一个类只能继承一个父类,也就是单继承。
但一个类可以实现多个接口,间接地实现了多继承。接口就是一系列方法的声明,没有实现。于之前面试android的时候考到了很多关于java的知识,所以这次重温数据结构知识就打算用java来学习,毕竟android是以java为基础的,而且我现在学习的j2ee架构也是以java为基础的。
java中的类就是对现实世界的对象的一种抽象,例如人就是一个类别,人有名字,联系电话,住址等成员属性,人拥有说话,吃饭,走路等成员方法。类就是这样,定义了一种对象,它有什么,会做什么。
继承——子类就是父类的一种特定类别。例如学生就是人的子类,学生属于人,是特定的一类人。所以我们让学生继承人,这样学生可以拥有人的属性和方法,也就是说,学生也有了名字,联系电话,住址等成员属性,拥有说话,吃饭,走路等成员方法。但是学生还有特定的一些方法(读书,上课),或者特定的一些属性(学号,年级),这些可以添加在子类中。
因为每个子类都属于父类,例如每个学生都属于人,所以可以用父类来引用子类的对象:People p = new Student();反过来不行。
java中一个类只能继承一个父类,也就是单继承。
但一个类可以实现多个接口,间接地实现了多继承。接口就是一系列方
关于算法与数据结构JAVA题和算法与数据结构java题目及答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。