好吧,所以我试图在Java创建自己的LinkedList类(带有泛型类型),但是遇到了一些问题。我创建了一个LinkedListNode类,它基本上设置并获取next和right指针以及节点的键。我的LinkedList类代码发布在下面,如果您编译并运行,您会发现它没有按照应该的方式设置列表。此刻,我正在尝试在节点x之后插入节点y,但我的打印输出看起来像:
键:5-上一键:6-下一键:6键:6-上一键:null-下一键:null
我的代码:
public class LinkedList<T> {
private LinkedListNode<T> m_head = null;
private LinkedListNode<T> m_tail = null;
public LinkedList() {
m_head = new LinkedListNode<T>();
m_tail = new LinkedListNode<T>();
m_head.setNext(m_tail);
m_tail.setPrev(m_head);
}
public LinkedListNode<T> getHead() {
return m_head;
}
public LinkedListNode<T> getTail() {
return m_tail;
}
public void insert(LinkedListNode<T> node, LinkedListNode<T> prev_node) {
prev_node.getNext().setPrev(node);
node.setPrev(prev_node);
node.setNext(prev_node.getNext());
prev_node.setNext(node);
}
public void delete(LinkedListNode<T> node) {
}
@Override
public String toString() {
LinkedListNode<T> pointer = m_head.getNext();
String result = "";
while(pointer.getKey() != null) {
T prev_key = pointer.getPrev() == null ? null : pointer.getPrev().getKey();
T next_key = pointer.getNext() == null ? null : pointer.getNext().getKey();
result += "\nKey: " + pointer.getKey() + " - prev key: " + prev_key + " - next key: " + next_key;
pointer = pointer.getNext();
}
return result;
}
public static void main(String[] args) {
LinkedListNode<Integer> x = new LinkedListNode<Integer>(5);
LinkedListNode<Integer> y = new LinkedListNode<Integer>(6);
LinkedList<Integer> list = new LinkedList<Integer>();
list.insert(x, list.getHead());
list.insert(y, x);
System.out.println(list.toString());
}
}
linkedListNode.java:
public class LinkedListNode<T> {
private T m_key;
private LinkedListNode<T> m_next = null;
private LinkedListNode<T> m_prev = null;
public LinkedListNode() {
}
public LinkedListNode(T key) {
m_key = key;
}
public T getKey() {
return m_key;
}
public void setKey(T key) {
m_key = key;
}
public LinkedListNode<T> getNext() {
return m_next;
}
public LinkedListNode<T> getPrev() {
return m_next;
}
public void setNext(LinkedListNode<T> node) {
m_next = node;
}
public void setPrev(LinkedListNode<T> node) {
m_prev = node;
}
}
您尝试实现的是双链表(如您有next和previous一样的双链表)。
而且你的结构设计有问题,保持头部和尾部可以问题的倾向。
您应该尝试使用引用其他元素的单个元素来实现它。
LinkedListNode<T> header = new LinkedListNode<T>();
header.getNext(); // head
header.getPrevious()//tail
insert的示例
public void insert(T element) { //We add to the begin
LinkedListNode<T> newElement = LinkedListNode<T>(element);
newElement.setNext(header); //previous begin we set to be next
newElement.setPrevious(header.getPrevious()); //previous end we set to be end.
newElement.getPrevious().setNext(newElement); //to previous end we set new begin.
newElement.getNext().setPrevious(newElement); //to previous begin we set new end.
}
问题内容: 我用Java创建了一个程序,并对其进行了设计,以使我希望它们出现在主体中的方法(getter方法)在启动包含这些方法的类之后可以轻松地调用它们。 问题是,我需要使这个应用程序(包含getter方法)像一个API,以便我可以让我的应用程序供开发人员在需要时使用我的函数(getter方法),并且只使用它们所需要的功能。需要添加此文件(我认为完成后的API显示为.jar文件)。 我该如何做到
当我们使用术语"类库"时,我们一般指的是位于libraries 文件夹中的类,它们在wiki的"类库参考"这个板块被讨论.在当前这个话题中,我们将讨论如何在 application/libraries 文件夹中建立你自己的类库,并使它们与全框架的资源维持分离. 作为一个额外的功能,当你需要在原始类中简单地添加一些功能时,CodeIgniter能使你的类库extend 自原始类.你甚至可以通过在ap
如果你只需要掌控一个应用的全部的消息和触发的事件,那么使用默认的**/**命名空间即可。如果你想要利用第三方代码,或者分享你的代码给别人,http://socket.io提供了一种命名一个socket的途径。 使用多路由控制一条单一的连接是有好处的。比如下方的示例代码,客户端发起两个WebSocket连接,而服务器端使用多路由技术仅仅只需要建立一个连接。 服务器端(app.js) var io =
问题内容: 我正在研究一个稀疏矩阵类,该类需要使用数组来存储矩阵的值。数组的每个元素(即每个)代表矩阵的一行。并且,数组中的每个元素代表一列和存储的值。 在我的课程中,我将数组声明为: 并且,在的构造函数中SparseMatrix,我尝试定义: 我最终得到的错误是 无法创建的通用数组 因此,我有两个问题: 我做错了什么 如果无法创建数组,为什么在数组的声明中可以接受该类型? 是我创建的课程。而且,
如果您在开发共享库的公司工作,或者您在开源或商业库中工作,则可能需要开发自己的自动配置。 自动配置类可以捆绑在外部jar中,仍然可以通过Spring Boot获取。 自动配置可以与“启动器”相关联,该“启动器”提供自动配置代码以及您将使用它的典型库。 我们首先介绍了构建自己的自动配置需要了解的内容,然后我们将继续介绍创建自定义启动器所需的典型步骤。 可以使用演示项目来展示如何逐步创建启动器。 4.
我试图创建自己的类型,在这些类型上我可以使用调用函数。 我如何创建自己的类型并像普通类型一样使用它们?我知道接口也不工作,但这是我的第一个猜测。