首页 > 解决方案 > 删除链表上的元素

问题描述

我想删除包含某些值的链接列表的所有节点,但是我实现的算法并没有像我希望的那样工作!当我执行程序时,它显示所有节点都已被删除!

输出 :

The List is empty

有人可以帮我发现问题吗?

typedef struct node
{
    int data;
    struct list* next;
}node;

typedef struct list
{
    node* start,*end;
}list;

void delete(list** ptr,int element)
{
    if((*ptr)->start==NULL)    return;

    node* previous=NULL;
    list* new_ptr=(list*)malloc(sizeof(list));

    new_ptr->start=(*ptr)->start;
    new_ptr->end=(*ptr)->end;

    while(new_ptr->start)
    {
        if(new_ptr->start->data==element)
        {
            if(previous==NULL)
            {
                node* temp=new_ptr->start;
                new_ptr->start=new_ptr->start->next;
                (*ptr)->start=new_ptr->start;
                free(temp);
            }
            else
            {
                node* temp=new_ptr->start;
                new_ptr->start=new_ptr->start->next;
                previous->next=new_ptr->start;
                free(temp);
            }
        }
        else
        {
            previous=new_ptr->start;
            new_ptr->start=new_ptr->start->next;
        }
    }
}

标签: calgorithmlinked-list

解决方案


推荐阅读