我在数据结构课程中有家庭作业,问题是:
实现双链表类。
方法:
display()
length()
要么 size()
insertSorted(Comparable)
insertToEnd(Comparable)
insertToHead(Comparable)
delete(Comparable)
boolean search(Comparable)
您必须在JAVA中执行此操作
创建一个应用程序层来测试您的类及其方法。将所有源文件压缩到一个文件中,并将其重命名为CS214HW1_first_lastName.zip将您的名字放在文件名中。如果需要,添加ReadMe.txt文件以获取更多信息,例如编译。
我正确地实现了所有操作,并且代码运行良好,但是我使用了例如:insertSorted(int)
代替insertSorted(Comparable)
,因为我不知道该怎么做。
我在网上搜索,并阅读了(Comparable
)的JAVA文档,但这还不够:(
有人可以帮忙吗,这很重要吗?
这是我的一些代码,我无法全部编写,因为我不希望我的朋友得到相同的代码。
如果有相同的代码,我将取零。
码:
class DLL {
class Node {
Node next;
Node prev;
int data;
Node() {
next = null;
prev = null;
data = 0;
}
Node(int dt) {
next = null;
prev = null;
data = dt;
}
}
Node head;
void insertToHead(int dt) {
if (head == null) {
head = new Node(dt);
}
else {
head.prev = new Node(dt);
head.prev.next = head;
head = head.prev;
}
}
public static void main(String args[]) {
DLL dll = new DLL();
dll.insertToHead(1);
dll.insertToHead(2);
dll.insertToHead(3);
}
}
请有人告诉我在开始时要进行哪些更改class
。
我们使用extend
s或implement
sComparable<E>
还是什么了?
我应该对方法进行哪些更改 insertToHead(Comparable)
我应该怎么做main
?
您可能想研究泛型也如何工作。基本思想是,您希望设置类,以便它不会确切知道对象的特定类型,但可以给您一些提示,以表明它可以期望已声明的泛型类型的事物的类型。
对于您的情况,您希望设置列表,以便可以创建可比较的任何内容的链接列表。Java有一个class
您已经提到的for,它Comparable<E>
告诉Java它将能够调用compareTo
所提供对象上的方法。
更具体地说,您的最后一个问题是:
使用以下样式的类声明MyClass<MyGenericType extends Comparable<MyGenericType>>
。就你而言DLL<E extends Comparable<E>>
。
切换方法参数以接受E
我们声明的泛型类型。
您应该使用class Integer
而不是原始类型int
,并将列表的创建更改为DLL<Integer> dll = new DLL<Integer>()
。
提供代码的完整更新版本:
public class DLL<E extends Comparable<E>> {
class Node {
Node next;
Node prev;
E data;
Node() {
next = null;
prev = null;
data = null;
}
Node(E dt) {
next = null;
prev = null;
data = dt;
}
}
Node head;
void insertToHead(E dt) {
if (head == null) {
head = new Node(dt);
}
else {
head.prev = new Node(dt);
head.prev.next = head;
head = head.prev;
}
}
public static void main(String args[]) {
DLL<Integer> dll = new DLL<Integer>();
dll.insertToHead(1);
dll.insertToHead(2);
dll.insertToHead(3);
}
}
这个新的实现应该为如何进行其他一些家庭作业提供提示。例如,您现在可以仅通过对象的compareTo
方法比较对象,这可能对提示提示进行排序有用。
该文档页面对如何使用此方法提供了很好的解释。您应该注意,在他们的文档中,他们使用称为T
而不是的泛型类型E
,只要您的程序唯一,就可以随意调用它。
编辑:
排序方向上的每个提示:
扩展Comparable
类的对象有一个方法,compareTo
该方法被设置为可以调用:
object1.compareTo(object2);
此方法返回int
,它将是:
> 0
当object1大于object2时= 0
当object1等于object2时< 0
当object1小于object2时我不想付出太多,因为这是一项家庭作业,但这是我的提示:
该方法上面的代码设置你的类,你就可以告诉之间的关系NodeA
,并NodeB
通过调用:
NodeA.data.compareTo(NodeB.data)
这将返回一个整数,该整数将根据上面的列表提供您的信息。
的<=
,>=
,==
运营商可能会在发现Integer
类的compareTo
方法。
就像是:
public int compareTo(Object o) {
int otherNumber = ((Integer) o).intValue();
int thisNumber = this.intValue();
if (otherNumber > thisNumber) {
return 1;
} else if (otherNumber < thisNumber) {
return -1;
} else {
return 0;
}
}
但更有可能他们只是做类似的事情:
public int compareTo(Object o) {
return this.intValue() - o.intValue(); // possibly normalized to 1, -1, 0
}
有关更多信息,请参阅文档Integer
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句