【问题标题】:How can i set a TREE NODE<T> with two informations-[STRING.INT]?如何使用两个信息-[STRING.INT] 设置树节点<T>?
【发布时间】:2017-06-21 11:20:37
【问题描述】:

我正在编写一个程序,我必须创建一个双链表,其中包含用户可以使用自己的值插入的节点。我有方法将新节点插入到列表的不同部分(前面、位置、尾部) .每个节点有两个信息,一个是String,另一个是INT(都是用户创建新节点后设置的)。 我的问题是如何将第一个信息设置为字符串,(在我给出的示例中,我给出了带有 bot 元素 INT 的版本,但第一个必须是字符串,这是我需要帮助的地方)

    public void insertInFirstPosition(int information,int key) {

    Node n = new Node(information,key, null, null);

    if (head == null) {

        n.setLinkNext(n);

        n.setLinkPrev(n);

        head = n;

        tail = head;

    } else {

        n.setLinkPrev(tail);

        tail.setLinkNext(n);

        head.setLinkPrev(n);

        n.setLinkNext(head);

        head = n;
    }

    size++;
}

这里是节点类 ` 公共类节点 {

private int data;

private int informazione;

private Node next, prev;

/* Constructor */

public Node() {
    next = null;

    prev = null;

    data = 0;

    informazione = 0;
}


public Node(int i,int k, Node n, Node p) {

    data = i;

    informazione = k;

    next = n;

    prev = p;

}

/* Function to set link to next node */

public void setLinkNext (Node n) {

    next = n;

}

/* Function to set link to previous node */

public void setLinkPrev(Node p) {

    prev = p;

}

/* Funtion to get link to next node */

public Node getNext() {

    return next;

}

/* Function to get link to previous node */

public Node getPrev() {

    return prev;
}

/* Function to set information to node */

public void setInformazione(int i) {

    informazione = i;

}

/* Function to get data from node */

public int getInformazione() {

    return informazione;

}

/* Function to set data to node */

public void setData(int d) {

    data = d;
}

/* Function to get data from node */
public int getData() {
    return data;
}

}`

在此代码中,您只能为两个节点槽输入 INT 值,第二个槽很好,必须是一个 int,同时第一个槽必须是一个字符串。 谢谢大家的帮助。

【问题讨论】:

  • 将参数类型改为String information?
  • 如果我这样做,第二行将全部标记为错误。这就是为什么我不知道该怎么做
  • 只有第一个参数可以改变类型?第二个参数总是int?
  • 是的,第二个参数是 int,所以让我们说一个用户可以存储的数字。第一个字符串可以看作是用户对节点的描述
  • 标题告诉我们您的Node 是通用的,但您的代码不是。请显示Node 实现

标签: java list tree


【解决方案1】:

您应该使您的 Node 类通用,并让它接受任何类作为数据。

class Node<T> {
    T data;
    Node<T> prev;
    Node<T> next;

    public Node (T data, Node<T> prev, Node<T> next) {
        this.data = data;
        this.prev = prev;
        this.next = next;
    }
}

现在您可以定义一个类(我们称之为SomeClass),其中包含您要存储在给定Node 中的所有属性,并使用以下命令创建Node

Node<SomeClass> n = new Node<SomeClass>(new SomeClass(information,key), null, null);

【讨论】:

  • 我已经有了节点类、节点参数,正如我告诉我的那样,我做了不同的方法来插入一个新的节点/计数列表长度等等。我的问题是节点的第一个值
  • @Artyy 也许您应该在问题中包含您的 Node 类,以使您的问题更清楚。使用通用节点应该允许您在单个节点中存储任意数量的属性。
  • 好的。我明白你的意图是什么。我会考虑的 。谢谢
  • T 可以解析为自定义类型。您无需将自己限制为提供的类型。
猜你喜欢
  • 2014-05-21
  • 1970-01-01
  • 2020-06-21
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多