在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作
程序员文章站
2024-03-21 16:37:22
...
方法一:用p从头至尾扫描单链表,pre指向*p结点的前驱。
代码如下:
void Del_1(Linklist &L,ElemType x)
{
LNode *p=L->next,*pre=L,*q;
while(p!=NULL)
{
if(p->data==x)
{
q=p;
p=p->next;
pre->next=p;
free(q);
}else{
pre=p;
p-=p->next;
}
}
}
方法二:尾插法
代码如下:
void Del_2(Linklist &L,ElemType x)
{
LNode *p=L->next,*r=L,*q;
while(p!=NULL)
{
if(p->data!=x)
{
r->next=p;
r=p;
p=p->next;
}else{
q=p;
p=p->next;
free(q);
}
}
r->next=NULL; //插入结束后置尾结点指针为NULL
}
不懂欢迎留言~
上一篇: Windows下安装Mysql8.0版本
下一篇: 7.全局异常处理