removes duplicates from linked list

How will you remove duplicates from a sorted linked list.

Comments

  1. //linked list
    #include
    using namespace std;


    /*********************************************************************************/
    struct node{
    struct node* next;
    int data;
    };
    /*********************************************************************************/



    /*********************************************************************************/

    void create_linked_list(struct node** head,struct node** tail,int data)
    {
    if(*tail==NULL)
    {
    (*tail) =new node;
    (*tail)->next=NULL;
    (*tail)->data=data;
    *head=*tail;
    }
    else
    {
    (*tail)->next=new node;
    (*tail)->next->next=NULL;
    (*tail)->next->data=data;
    (*tail)=(*tail)->next;
    }
    }

    /*********************************************************************************/

    void traverse_linked_list(struct node* head)
    {
    cout<<"\n";
    while(head!=NULL)
    {
    cout<data<<" ";
    head=head->next;
    }
    cout<<"\n";
    }

    /*********************************************************************************/

    void delete_linked_list(struct node* head)
    {
    struct node* prev=head;
    while(head!=NULL)
    {
    prev=head;
    head=head->next;
    delete(prev);
    }
    }


    /*********************************************************************************/
    void remove_duplicates_from_sorted_list(struct node* head)
    {
    if(head->next==NULL)
    return;
    struct node* current=head->next;
    struct node* previous=head;

    while(current!=NULL)
    {
    if(current->data==previous->data)
    {
    previous->next=current->next;
    delete(current);
    current=previous->next;
    }
    else
    {
    previous=current;
    current=current->next;
    }
    }


    }




    /**********************************************************************************/
    int main()
    {
    struct node*first=NULL,*last=NULL;
    create_linked_list(&first,&last,6);
    create_linked_list(&first,&last,6);
    create_linked_list(&first,&last,6);
    create_linked_list(&first,&last,6);
    create_linked_list(&first,&last,6);
    create_linked_list(&first,&last,1);
    traverse_linked_list(first);
    remove_duplicates_from_sorted_list(first);
    traverse_linked_list(first);
    delete_linked_list(first);
    system("pause");
    return 0;
    }

    ReplyDelete

Post a Comment

Popular posts from this blog