从链表中移除重复节点

Posted bot攻略

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从链表中移除重复节点相关的知识,希望对你有一定的参考价值。

java中有Hashtable函数,真的是方便到家没话说····

因为java中没有指针概念,所以只能通过对象来建立链表,建立链表代码如下

public class LinkedListNode
/*
* 建立链表,含有data 和指向下一节点的link
*/
  public int data;
  public LinkedListNode link;
  /*
   * 定义头结点,尾节点和创建新节点的空间
   */
  LinkedListNode first,newNode,last;
int num;
  
  public LinkedListNode buildList(int[] input)

  if(input.length>0)
  for(int i=0;i<input.length;i++)
    newNode= new LinkedListNode();
    newNode.data=input[i];
    newNode.link=null;
    if(first==null)
     first=newNode;
     last=newNode;
    else
     last.link=newNode;
     last=newNode;
   
   

  return first;


链表建立好后就可以通过哈希表来删除重复节点,

public class quchu

static int[]input=12,35,12,78,15,78,1;

public static void main(String[] args)
// TODO Auto-generated method stub
LinkedListNode list = new LinkedListNode();
list = list.buildList(input);
deleteDups(list);

while(list.link!=null)
   System.out.println("list info is "+list.data);
   list=list.link;
 



public static void deleteDups(LinkedListNode n)
Hashtable table = new Hashtable();
LinkedListNode previous = null;
while(n!=null)
if(table.containsKey(n.data)) previous.link = n.link;
else
table.put(n.data, true);
previous = n;

n = n.link;



但不知为何input[]数组下标为最后的数没有办法读取进链表,如果有知道的大神请指点下,谢谢

以上是关于从链表中移除重复节点的主要内容,如果未能解决你的问题,请参考以下文章

链表有序链表中移除重复项

LeetCode 82 Remove Duplicates from Sorted List II(从已排序链表中移除重复元素)(Linked List)(*)

从链表中删除用户选择的节点,用 c 中另一个列表中的节点替换它们

了解从链表中删除重复项的复杂性

从链表顺利打印节点

从链表中删除节点