zoukankan      html  css  js  c++  java
  • C++循环单链表删除连续相邻重复值

    比如:1(头)->2->2->3->3->1->1(头) 去除以后的结果是1->2->3,注意头尾的1也要去掉一个。

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    struct tnode
    {
        tnode* next;
        int value;
    };
    
    tnode* unique(tnode *head)
    {
        tnode* p = head;
        while (p->next != head)
        {
            if (p->next->value == p->value)
            {
                tnode* temp = p->next;
                p->next = temp->next;
                delete temp;
            }
            else
            {
                p = p->next;
            }
        }
        if (p->value == head->value)
        {
            p->next = head->next;
            delete head;
            head = p;
        }
        return head;
    };
    
    void print(tnode* head)
    {
        tnode* i = head;
        while (i->next != head)
        {
            cout << i->value << " ";
            i = i->next;
        }
        cout << i->value << endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        tnode* node1 = new tnode;
        node1->value = 1;
        tnode* node2 = new tnode;
        node2->value = 1;
        tnode* node3 = new tnode;
        node3->value = 2;
        tnode* node4 = new tnode;
        node4->value = 2;
        tnode* node5 = new tnode;
        node5->value = 3;
        tnode* node6 = new tnode;
        node6->value = 1;
        node1->next = node2;
        node2->next = node3;
        node3->next = node4;
        node4->next = node5;
        node5->next = node6;
        node6->next = node1;
        tnode* head = unique(node1);
        print(head);
        return 0;
    }
  • 相关阅读:
    第06组 Alpha冲刺(6/6)
    第06组 Alpha冲刺(5/6)
    第06组 Alpha冲刺(4/6)
    第06组 Alpha冲刺(3/6)
    第06组 Alpha冲刺(2/6)
    第06组 Alpha冲刺(1/6)
    第06组 团队Git现场编程实战
    团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
  • 原文地址:https://www.cnblogs.com/shuada/p/3481025.html
Copyright © 2011-2022 走看看