码迷,mamicode.com
首页 > 其他好文 > 详细

链表例题1:删除链表中的重复结点

时间:2018-12-31 15:42:40      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:alt   str   png   his   http   data   temp   使用   oid   

技术分享图片

解题思路:

1.创建一个结点类

2.创建一个删除方法

3.使用快慢指针的思想(主要的部分)

技术分享图片

 

代码如下:

 1 public class RemoveRepeation {
 2 
 3     public static void main(String[] args) {
 4         int data[]= {1,1,1,1,1,2,2,2,2,2,3,3,3,4,4,5,5,5,6,6,5,5,1,1,3,2,5,3,10,10};
 5         Node head=new Node(null); //创建一个头结点哑元
 6         //将元素通过链表串进来
 7         Node p=head;
 8         for(int i=0;i<data.length;i++)
 9         {
10             p.next=new Node(data[i]);
11             p=p.next;
12         }
13         
14         //删除方法的调用
15         remove(head);
16         
17         //删除后的结果输出
18         Node p1=head.next;
19         while(p1!=null)
20         {
21             System.out.print(p1.value+"  ");
22             p1=p1.next;
23         }
24     }
25     
26     
27     private static void remove(Node node) 
28     {
29         Node p1=node.next;   //当前要比较的结点
30         Node pre=node.next; //慢指针
31         Node p2=pre.next;  //快指针
32         while(p2!=null)
33         {
34             Object temp=p1.value; //存储要比较值从前往后一步一步走
35             
36             //把要比较的值与它后面的值一一比较
37             while(p2!=null)
38             {
39                 if(temp==p2.value)
40                 {
41                     //慢指针不动,快指针移动
42                     pre.next=p2.next; 
43                     p2=pre.next;
44                 }
45                 else
46                 {
47                     //快,慢指针都向前移动一下
48                     pre=p2;
49                     p2=p2.next;
50                 }
51             }
52             
53             //重新再定义快,慢指针
54             if(p1.next!=null)
55             {
56             p1=p1.next;
57             pre=p1;
58             p2=p1.next;
59             }
60         }
61     }
62     
63     //结点类
64     private static class Node
65     {
66         Node next;
67         Object value;
68         
69         public Node(Object value)
70         {
71             this.value=value;
72         }
73     }
74     
75 
76 }

结果:

技术分享图片

 

链表例题1:删除链表中的重复结点

标签:alt   str   png   his   http   data   temp   使用   oid   

原文地址:https://www.cnblogs.com/LgxBoKeYuan/p/10202040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!