zoukankan      html  css  js  c++  java
  • 华为笔试题05

    • 题目描述:

    输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排。

    • 要求实现函数:

    void vChanProcess(strNode * pstrIn,strNode * pstrOut);

    【输入】 pstrIn:输入一个不带头节点的单向链表

    【输出】 pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请)。

    【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

    • 示例

    输入链表的内容依次为 6,7,8,8,9,10,6

    则输出链表的内容依次应该是 10,9

    关键部分代码为

        int len=20;
        int *a=new int [len];
        for(int i=0;i<len;++i)
        {
            a[i]=rand()%7;
            cout<<a[i]<<" ";
        }
        cout<<endl;
        set<int> sto;
        for(int i=0;i<len;++i)
        {
            int temp=a[i];
            for(int j=i+1;j<len;j++)
            {
                if(a[j]==temp)
                {
                    sto.insert(j);
                    sto.insert(i);
                }
            }
        }
        vector<int> out;
        int count=0;
        for(int i=0;i<len;++i)
        {
            set<int>::iterator iter;
            iter=find(sto.begin(),sto.end(),i);
            if(iter==sto.end())
            {
                out.push_back(a[i]);
                count++;
            }
        }
        for(vector<int>::iterator iter1=out.begin();iter1!=out.end();++iter1)
            cout<<*iter1<<" ";
        return 0;

      

  • 相关阅读:
    A. Playing with Paper
    手摇算法
    perl之创建临时文件夹遇到同名文件该咋办
    B. Two Buttons
    A Pangram
    shell的面试题
    A. Game
    B. Drazil and His Happy Friends
    A. Drazil and Date
    2道阶乘的算法题
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/3277021.html
Copyright © 2011-2022 走看看