删除无序链表中值重复出现的节点

来源:互联网 发布:淘宝设计美工招聘 编辑:程序博客网 时间:2024/06/08 17:46

import java.util.HashSet;//删除无序链表中值重复出现的节点public class DelSameList{        //节点的定义    public static class Node{       int value;       Node next;       public Node(int data)       {       this.value=data;       }    }           //(一、哈希表法 时间复杂度O(n),空间复杂度O(n))删除无序链表中值重复出现的节点    public static void delSameList(Node head)    {        if(head==null)        {        return ;        }        HashSet<Integer> set=new HashSet<Integer>(); //存储不相同节点的值        Node p=head;        Node cur=head.next;        set.add(head.value); //首先加入头节点        while(cur!=null)        {             if(set.contains(cur.value))             {             p.next=cur.next; //删除cur这个节点             }else{             set.add(cur.value);             p=cur;             }        cur=cur.next;        }    }         //(一、选择排序法 时间复杂度O(n*n),空间复杂度O(1))删除无序链表中值重复出现的节点    public static void delSameList2(Node head)    {    if(head==null)    {    return;    }        Node cur=head;        Node pre=null;        Node next=null;                while(cur!=null)        {        pre=cur;        next=cur.next;        while(next!=null)         {         if(cur.value==next.value)         {         pre.next=next.next; //删除next节点         }         else         {         pre=next;   //pre向下移动一个节点         }         next=next.next;         }         cur=cur.next;        }            }    //打印链表    public static void PrintList(Node head)    {    while(head!=null)    {    System.out.print(head.value+" ");    head=head.next;    }    System.out.println();    }public static void main(String[]args){    Node node=new Node(1);node.next=new Node(2);node.next.next=new Node(3);node.next.next.next=new Node(3);node.next.next.next.next=new Node(4);node.next.next.next.next.next=new Node(4);node.next.next.next.next.next.next=new Node(2);node.next.next.next.next.next.next.next=new Node(1);node.next.next.next.next.next.next.next.next=new Node(1);        PrintList(node);delSameList2(node); //删除重复的节点        PrintList(node);}}


原创粉丝点击