c - 删除链表上的元素
问题描述
我想删除包含某些值的链接列表的所有节点,但是我实现的算法并没有像我希望的那样工作!当我执行程序时,它显示所有节点都已被删除!
输出 :
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;
}
}
}
解决方案
推荐阅读
- azure-functions - 如何在 Azure Function 中调用 WCF?
- html - 如何解析kml文件以放大地图
- c# - 如何使用退出键暂停/取消暂停游戏?
- python - Julia 等效于 nb_conda_kernels 来区分环境
- airflow - 在气流操作员之间共享大文件
- python - 聚合具有相同id号的行并基于聚合输入列值
- google-apps-script - calendar-api调用如何申请验证
- python - 我们可以从另一个数据框中将系列附加到数据框中的字段吗?
- c++ - 将 C++20 范围写入标准输出
- html - 引导表单未作为 POST 提交