【问题标题】:Linked List with Comparison带比较的链表
【发布时间】:2016-02-22 19:15:36
【问题描述】:

您好,我需要实现一个带有单独链接的 Hashtable。为此,我正在实现一个 Node 类和 LinkedList。链表中包含的节点具有属性数据、计数、指向下一个的链接和指向上一个的链接。链表不应包含具有重复值的值,但如果插入了另一个具有相同值的节点,则应增加该节点的计数.以上是我的代码,但我不知道如何实现插入功能,以便在找到重复节点时增加计数。

public void insertToHead(Node newNode) {
    newNode.setNext(head);
    head = newNode;
}

public void drop(Node newNode) {
    newNode.getPrev().setNext(newNode.getNext());
}

public void insert(String newData) {
    Node newNode = new Node(newData);
    Node temp = head;
    if (temp == null) {
        insertToHead(newNode);
        newNode.incrementCount();
        nodeCount++;
    } else {
        for(int i=0;i<nodeCount;i++){
            if(temp.getData().equals(newNode.getData())){
                if(temp.getPrev()==null){
                    temp.incrementCount();
                    head=temp;
                }
                if(temp.getNext()==null){
                     temp.getPrev().setNext(null);
                    temp.incrementCount();
                    insertToHead(temp);
                }
                else{
                temp.incrementCount();
                drop(temp);
                insertToHead(temp);
                }
            }
            temp = temp.getNext();
        }
        insertToHead(newNode);
        nodeCount++;
    }
}

【问题讨论】:

  • if(temp==){ 不会编译!
  • 感谢您的回复,这是我的错误,但仍然无法正常工作

标签: java


【解决方案1】:

你需要遍历链表,直到找到一个相等的节点,然后在同一个节点上增加计数,而不是前一个。如果您在该过程中到达列表末尾,则进行正常插入。

Node newNode = new Node(newData);
Node temp = head;
if (temp == null) {
    insertToHead(newNode);
    newNode.incrementCount();
    nodeCount++;
} else {
   while(temp != null){
      if(temp.getData().equals(newNode.getData())){
        temp.incrementCount();
        break;
      }
      temp = temp.getNext();
   }

   // didn't find anything, prepend to the list
   if(temp == null){
    insertToHead(newNode);
    nodeCount++;
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-14
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2018-12-22
    • 2021-06-13
    相关资源
    最近更新 更多