java - Java删除重复的链表

标签 java linked-list

我正在尝试实现一种从链接列表中删除所有重复项的方法。我已经设法照顾好尾部了。换句话说,如果尾部的数据重复,程序就不会抛出异常错误。现在,我正在尝试处理头部,以便如果 head 的数据重复,我想设置 head = head. next 以便重复项不再出现在链表中。但是我的方法deleteDuplicates 不处理head。有人有解决这个问题的建议吗?

class Node {
        private Node next = null; 
        private int data; 

        public Node(int d) {
            data = d; 
        }

        void appendToTail(int d) {
            Node end = new Node(d); 
            Node n = this; 

            while(n.next != null) {
                n = n.next; 
            }
            n.next = end; 
        }

        void print() {
            Node n = this; 
            while(n != null) {
                System.out.println(n.data); 
                n = n.next; 
            }
        }

        Node deleteDuplicates(Node head, int d) {
            Node n = head;
            if(n.data == d) {
                head = head.next; 
                n = n.next; 
            }
            while(n != null) {
                if(n.next.data == d) {
                    if(n.next == null && n.next.data == d) {
                        return head;
                    }
                    n.next = n.next.next;
                }
                n = n.next; 
            }
            return head; 
        }

        public static void main(String [] args) {
            Node x = new Node(9); 
            x.appendToTail(5);
            x.appendToTail(9);
            x.appendToTail(6);
            x.appendToTail(9);  
            x.appendToTail(7);
            x.appendToTail(9);  
            x.appendToTail(8); 
            x.appendToTail(9); 
            x.deleteDuplicates(x, 9); 
            x.print(); 
        }   
    }

最佳答案

代码中的问题是删除后您没有重新分配头部。 如果你修改如下,我想你的头删除问题就可以解决了。

x = x.deleteDuplicates(x, 9);

不用说,还有其他有效的方法,例如散列,可以用来降低代码的时间复杂度。

关于java - Java删除重复的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284399/

相关文章:

c++ - 链表中的 pop() 函数实现 (C++)

Javascript链表删除问题

java - "Match the Shoes"挑战我的错误在哪里

java - Connection.createArrayOf 抛出 SQLFeatureNotSupportedException

java - 使用java代码清除jboss缓存

c - 链表有循环函数复习

相当于tailq的C++

java - 运行 Tomcat 服务器的相对路径问题

java - 如何让 Hibernate 3 仅在调用其 getter 时检索值

c - C中的链表结构与读取txt