我是靠谱客的博主 勤恳小笼包,最近开发中收集的这篇文章主要介绍以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

下面是单链表的数据结构

typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*Linklist;

1.以指针参数实现

void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x
LNode *l = head;
LNode *p = head->next;
while(p != null){
if(p->data == x){
l->next = p->next;
free(p);
}
l = p;
p = p->next;
}
}

这是最一般的方法,使用指针来实现。


2.以递归跟引用参数实现

void delete_x_2(Linklist &L,ElemType x){//为单链表头结点引用,删除结点的值为x
LNode *p;
if(L == null){
return;
}
if(L->data == x){
p = L;
L = L->next;
free(p);
delete_x_2(L,x);
}else{
delete_x_2(L->next,x);
}
}
有些人认为直接free掉p结点会造成断链,实际上因为L为引用,是直接对原链表进行操作,因此不会断链。




最后

以上就是勤恳小笼包为你收集整理的以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数的全部内容,希望文章能够帮你解决以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部