非递减单链表删除重复元素 -转

本文介绍了一个简单的链表实现,包括添加元素和去除重复元素的功能。通过C++代码展示了如何构建链表,并实现了去除重复项的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    typedef struct _MyListNode  
    {  
        int nData;  
        struct _MyListNode * pNext;  
    } MyListNode, *PMyListNode;  
      
      
    class MyList  
    {  
    public:  
        MyList()  
        {  
            pHead = new MyListNode();  
            pHead->nData = 0;  
            pHead->pNext = NULL;  
            pTail = NULL;  
        }  
        ~MyList()  
        {  
            MyListNode * pTmp = pHead;  
            while (pTmp != NULL)  
            {  
                pHead = pTmp->pNext;  
                delete pTmp;  
                pTmp = pHead;  
            }  
      
            pHead = NULL;  
        }  
      
        void Append(int num)  
        {  
            MyListNode * pTmp = new MyListNode();  
            pTmp->nData = num;  
            pTmp->pNext = NULL;  
      
            if (pTail != NULL)  
            {  
                pTail->pNext = pTmp;  
            }  
            else  
            {  
                pHead->pNext = pTmp;  
            }  
            pTail = pTmp;  
        }  
      
        void Print()  
        {  
            MyListNode * pTmp = pHead->pNext;  
            while (pTmp != NULL)  
            {  
                cout << pTmp->nData << " ";  
                pTmp = pTmp->pNext;  
            }  
            cout << endl;  
        }  
      
        void RemoveRepeat()  
        {  
            MyListNode * pNode = pHead->pNext;  
            while (pNode != NULL)  
            {  
                MyListNode * pTmp = pNode->pNext;  
                while (pTmp != NULL && pNode->nData == pTmp->nData)  
                {  
                    pNode->pNext = pTmp->pNext;  
                    delete pTmp;  
                    pTmp = pNode->pNext;  
                }  
      
                pNode = pTmp;  
            }  
        }  
    private:  
        MyListNode * pHead;  
        MyListNode * pTail;  
      
    };  
      
      
    int main()  
    {  
        MyList lst;  
        lst.Append(7);  
        lst.Append(10);  
        lst.Append(10);  
        lst.Append(21);  
        lst.Append(30);  
        lst.Append(42);  
        lst.Append(42);  
        lst.Append(42);  
        lst.Append(51);  
        lst.Append(70);  
      
        lst.Print();  
      
        lst.RemoveRepeat();  
        lst.Print();  
      
        return 0;  
    } 

http://blog.youkuaiyun.com/matrixcl/article/details/6853458

转载于:https://www.cnblogs.com/luquanmingren/archive/2013/01/04/2843689.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值