码迷,mamicode.com
首页 > 其他好文 > 详细

链表 | 去除递增有序单链表中的重复元素

时间:2018-02-17 16:07:23      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:typedef   ide   void   com   ace   UI   for   main   ++   

王道P37T12

主代码:

void delete_common(LinkList& L){
    LNode* pre=L,*p=L->next;
    while(p!=NULL){
        LNode* r=p->next;
        while(r!=NULL && p->data==r->data){
            pre->next=r;
            LNode* del=p;
            p=r;
            delete del;
            r=r->next;
        }
        pre=p;
        p=p->next;
    }
}

完整代码:

技术分享图片
#include <cstdio>
#include <stdlib.h>

using namespace std;

typedef struct LNode{
    int data;
    struct LNode* next=NULL; 
    LNode(){    }
    LNode(int x){    
        data=x;
    }
}LNode;

typedef LNode* LinkList;

LinkList  build_list(int * arr,int n){
    int i;
    LinkList L=new LNode;
    LinkList pre=L;
    for(i=0;i<n;i++){
        LinkList p=new LNode(arr[i]);
        pre->next=p;
        pre=p;
    }
    return L;
}

void show_list(LinkList& L){
    LinkList p=L->next;
    while(p){
        printf("%d ",p->data);
        p=p->next;
    }
    puts("");
}

void delete_common(LinkList& L){
    LNode* pre=L,*p=L->next;
    while(p!=NULL){
        LNode* r=p->next;
        while(r!=NULL && p->data==r->data){
            pre->next=r;
            LNode* del=p;
            p=r;
            delete del;
            r=r->next;
        }
        pre=p;
        p=p->next;
    }
}

int main(){
    int arr[10]={0,0,0,0,0,0,0,0,0,0};
    LinkList L=build_list(arr,10);
    show_list(L);
    delete_common(L);
    show_list(L);
}
 
View Code

 

链表 | 去除递增有序单链表中的重复元素

标签:typedef   ide   void   com   ace   UI   for   main   ++   

原文地址:https://www.cnblogs.com/TQCAI/p/8451939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!