CareerCup-2.1

简介:

Write code to remove duplicates from an unsorted linked list.

FOLLOW UP How would you solve this problem if a temporary buffer is not allowed?

#include <iostream>  
using namespace std;  

// Creating a Linked List:  
struct Node  
{  
    Node(int d):data(d){next = NULL;};  
    int data;  
    Node* next;  
};  

void printNode(Node* head)  
{  
    cout<<"Print:"<<endl;  
    while(head != NULL)  
    {  
        cout<<head->data<<endl;  
        head = head->next;  
    }  
    cout<<"End"<<endl;  
};  

// Deleting a Node from a Singly Linked List  
bool deleteFromPre(Node** head, Node* pre)  
{  
    if(*head == NULL || pre == NULL)  
        return false;  
    Node *p;  
    if((*head) == pre)  
    {  
        p = *head;  
        *head = p->next;   
        delete p;  
        return true;  
    }  
    if(pre->next == NULL)  
        return false;  
    p = pre->next;  
    pre->next = pre->next->next;  
    delete p;  
    return true;  
};  

void removeDuplicates(Node** head)  
{  
    if(head == NULL)  
        return;   
    Node *p, *q;  
    for(p = *head; p != NULL; p = p->next)  
    {  
        for(q = p; q->next != NULL; q = q->next)  
        {  
            if(p->data == q->next->data)  
            {  
                deleteFromPre(head, q);  
                // 这里栽跟头了 删除操作后无法保证q->next不为空   
                if(q->next == NULL)  
                    break;  
            }             
        }  
    }  
};  

int main()  
{  
    Node* head = new Node(2);  
    head->next = new Node(4);  
    head->next->next = new Node(4);  
    printNode(head);  
    removeDuplicates(&head);  
    printNode(head);          
    system("pause");   
}; 

目录
相关文章
|
移动开发 API Android开发
mPaaS常见问题之初始化异常如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
271 0
|
应用服务中间件 Linux 网络安全
centos7 下离线安装gcc g++ nginx,并配置nginx进行网络流转发
centos7 下离线安装gcc g++ nginx,并配置nginx进行网络流转发
782 0
|
存储 算法 NoSQL
定时器方案之红黑树、最小堆、时间轮
定时器方案之红黑树、最小堆、时间轮
544 0
|
监控 数据库连接 PHP
php中register_shutdown_function函数用法详解
通过 `register_shutdown_function`,PHP开发者可以对脚本的终止进行更精细化的处理,这个函数让开发者能在脚本的生命周期结束时有机会执行最后的操作,无论脚本是正常结束还是发生错误。由于它的高度实用性和灵活性,`register_shutdown_function`是PHP开发中不可或缺的工具之一。
243 0
|
消息中间件 前端开发 Kafka
离线数仓(二)【用户行为日志采集平台搭建】(1)
离线数仓(二)【用户行为日志采集平台搭建】
|
网络协议 PHP
Wireshark常用过滤器表达式汇总
【7月更文挑战第6天】Wireshark 抓包和显示过滤器用于精确定位网络流量。
|
算法
【MATLAB】语音信号识别与处理:小波去噪滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:小波去噪滤波算法去噪及谱相减算法呈现频谱
263 1
|
存储 安全 数据库
一次编写,全平台运行!揭秘 Uno Platform 如何革新教育软件开发,从教学工具到在线学习平台,全方位提升用户体验
在软件开发中,安全存储至关重要。本文介绍如何在跨平台开发框架 Uno Platform 中实现数据的安全存储,包括选择合适的数据存储方式(如本地文件或数据库存储),使用 Bouncy Castle 加密库对数据进行 AES 加密,并将加密后的数据存储到本地文件或数据库中,最后读取并解密数据以确保其可用性。通过这些步骤,可以有效保护用户敏感信息,防止数据泄露。
191 1
|
存储 机器学习/深度学习 Linux
【C语言】语言篇——数组和字符串
【C语言】语言篇——数组和字符串
84 0
|
存储 编译器 C++
【C++关键字】auto的使用(C++11)
【C++关键字】auto的使用(C++11)