去重

// 去重2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include
#include
#include
using namespace std;

typedef struct tagSNode {
    int value;
    tagSNode* pNext;
    tagSNode(int v) :value(v), pNext(NULL) {}
}SNode;


void DeleteDuplicateNode(SNode* pHead) {
    SNode* pPre = pHead->pNext;
    SNode* pCur;

    while (pPre)
    {
        pCur = pPre->pNext;
        if (pCur && (pCur->value == pPre->value))
        {
            pPre->pNext = pCur->pNext;
            delete pCur;
        }
        else
        {
            pPre = pCur;
        }
    }
}
//void Print(SNode* p) {
//  SNode* next; //创建一个新的节点
//  while (p)
//  {
    //  next = p->pNext;
    //  printf("%d", p->value);
    //  p = next;
    //}
//}


void Print(SNode* p) {
    SNode* next;//创建一个节点
    while (p)//这个传进来的不为空
    {
        next = p->pNext;//新建的节点承接
        printf("%d", p->value);//打印值
        p = next;//把下一个值赋予
    }
}
int main()
{


    SNode* pHead = new SNode(0);
    int data[] = { 2,3,3,4,5 };
    int size = sizeof(data) / sizeof(int);
    for (int i = 0; i < size; i++)
    {
        SNode* p = new SNode(data[i]);
        p->pNext = pHead->pNext;
        pHead->pNext = p;
    }

    Print(pHead);
    DeleteDuplicateNode(pHead);
    printf("\n");
    Print(pHead);
    system("pause");
    return 0;
}


你可能感兴趣的:(去重)