ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递归去除线性表(链表)元素

2021-10-19 13:01:38  阅读:223  来源: 互联网

标签:LinkList 线性表 递归 index recursion next 链表 prior NULL


#王道数据结构线性表:有读者认为直接去掉p结点会造成断链?

递归去除线性表(链表)元素

结论:确实会断链

一、 王道的答案

数据结构2022线性表
王道数据结构的答案:
在这里插入图片描述

在这里插入图片描述

二、个人见解

用c语言写的


#include<stdlib.h>
#include "stdio.h"

typedef int ElemType;


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


/**
 *
 * @param L         传入的链表
 * @param prior     要删除的节点的前驱
 * @param e         要删除的元素
 * @return          删除元素e后的链表,如果元素e在表头,不反回会产生错误
 */
LinkList del_recursion(LinkList L, LinkList prior, ElemType e) {
    LNode *p;
    if (L == NULL) return L;
    if (L->data == e && prior == NULL) {
        p = L;
        L = L->next;
        prior = L;
        free(p);
        if (L && L->data == e)	//观察表头的下一元素是不是e
            del_recursion(L, NULL, e);
        else {
            del_recursion(L,prior,e);
        }
    } else if (L->data == e && prior != NULL) {
        p = L;
        prior->next = L->next;
        L=L->next;
        free(p);
        del_recursion(L,prior,e);

    } else {
        prior = L; //
        del_recursion(L->next,prior, e);
    }
    return L;
}

用来遍历的代码:

void print_LinkList(LinkList L) {
    if (L->next == NULL) {
        return;
    }

    LNode *index;
    index = L;


    while (index != NULL) {

        printf("%d ", index->data);

        index = index->next;
    }
}

运行结果:
在这里插入图片描述

标签:LinkList,线性表,递归,index,recursion,next,链表,prior,NULL
来源: https://blog.csdn.net/qq_46221538/article/details/120843782

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有