链表算法面试题---删除链表中的重复元素I

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

举例:
原链表: 1->1->2->3->3
删除后: 1->2->3

public class Code_05 {
    
    
    public static void main(String[] args) {
    
    
        Code_05 c = new Code_05();
        ListNode n = new ListNode();
        ListNode head = n;
        for (int i = 1; i <= 5; i++) {
    
    
            n.next = new ListNode(i);
            n = n.next;
            if (i % 2 == 0) {
    
    
                n.next = new ListNode(i);
                n = n.next;
            }
        }
        System.out.println("原链表:" + head);
        System.out.println("删除后:" + c.deleteDuplicates(head));
    }

    /**
     * 通过不断移动cur,判断当前cur的值与cur.next的值是否相等,如果相等,则只改变cur.next,并让其指向下一个节点,就等于跳过了cur.next的节点
     * 如果不相等,则移动cur节点位置到cur.next上。
     * @param head
     * @return
     */
    public ListNode deleteDuplicates(ListNode head) {
    
    
        ListNode cur = head;
        while (cur != null && cur.next != null) {
    
    
            if (cur.val != cur.next.val) {
    
    
                cur = cur.next;
            } else {
    
    
                cur.next = cur.next.next;
            }
        }
        return head;
    }
}

猜你喜欢

转载自blog.csdn.net/CSDN_WYL2016/article/details/115129698
今日推荐