zoukankan      html  css  js  c++  java
  • 112 删除排序链表中的重复元素

    原题网址:https://www.lintcode.com/problem/remove-duplicates-from-sorted-list/description

    描述

    给定一个排序链表,删除所有重复的元素每个元素只留下一个。

    您在真实的面试中是否遇到过这个题?  

    样例

    给出 1->1->2->null,返回 1->2->null

    给出 1->1->2->3->3->null,返回 1->2->3->null

    标签
    链表
     
    思路:遍历链表,如果当前节点值与下一个节点值相等,当前节点的next指向下一个节点的next;如果不相等,当前节点后移一位。
     
    注意:循环判断条件有两个,当前节点和当前节点的next都不能为NULL;
     
    AC代码:
    /**
     * Definition of singly-linked-list:
     * class ListNode {
     * public:
     *     int val;
     *     ListNode *next;
     *     ListNode(int val) {
     *        this->val = val;
     *        this->next = NULL;
     *     }
     * }
     */
    
    class Solution {
    public:
        /**
         * @param head: head is the head of the linked list
         * @return: head of linked list
         */
        ListNode * deleteDuplicates(ListNode * head) {
            // write your code here
            if (head==NULL)
        {
            return head;
        }
        ListNode *p=head;
        while (p!=NULL&&p->next!=NULL)
        {
            if (p->val==p->next->val)
            {
                p->next=p->next->next;
            }
            else
            {
                p=p->next;
            }
        }
        return head;
        }
    };

    初次代码没通过,因为我在“ 如果当前节点值与下一个节点值相等,当前节点的next指向下一个节点的next ” 这个程序块中又加了一句 p=p->next; 蠢……

     

  • 相关阅读:
    蚂蚁问题
    LinuxC安装gcc
    怎样在VC里面使用graphics.h绘图
    C语言之固定格式输出当前时间
    C语言之猜数字游戏
    C语言之新同学年龄
    C语言之ASCII码
    C语言之辗转相除法
    C语言之自守数
    C语言之一数三平方
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9134110.html
Copyright © 2011-2022 走看看