首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我的delete_list函数为什么不返回一个空的链表,有没有明显的问题

根据提供的问答内容,你在问delete_list函数为什么不返回一个空的链表,并询问是否存在明显的问题。为了回答这个问题,首先需要了解delete_list函数的具体实现和预期行为。在没有更多详细信息的情况下,我将提供一个常见的问题和解答:

问题:我的delete_list函数为什么不返回一个空的链表,有没有明显的问题?

回答:delete_list函数不返回一个空的链表可能有多种原因。以下是一些可能的解释和常见问题:

  1. 删除元素后保留原始链表结构:delete_list函数的设计可能是为了保留原始链表的结构,只是将需要删除的元素从链表中移除。这样做的好处是可以保持链表的完整性和相对较低的开销。
  2. 函数设计不合理:也有可能是delete_list函数的设计存在问题。它可能没有正确地处理链表的头节点、尾节点或者其他特殊情况,导致未正确删除链表中的元素。这可能是因为缺乏对特殊情况的考虑或者算法实现错误。

要确定delete_list函数是否存在明显的问题,可以考虑以下几个方面:

  • 检查delete_list函数的实现,确保它正确处理了链表中的每个节点,并且删除操作是正确执行的。
  • 检查delete_list函数的输入参数是否正确。例如,函数是否接收链表的头节点作为参数,并且在执行删除操作时不会修改输入参数。
  • 检查delete_list函数在删除操作后是否正确更新链表的指针和长度等相关信息。
  • 检查函数的错误处理机制,例如是否正确处理空链表或者其他异常情况。

需要注意的是,上述解答是基于一般情况的推测。要给出更准确和全面的答案,需要提供delete_list函数的实际代码实现和相关上下文信息。只有在了解了具体的实现细节后,才能给出更准确和有针对性的回答。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

链表插入和删除算法

();//返回值是链表头结点地址 7 void traverse_list(PNODE pHead); 8 bool is_empty(PNODE pHead); 9 int length_list...(pHead,4,&val)){ 33 //删除第四个节点数据,并返回删除数据,由于是直接在地址上操作,所以无需返回值 34 printf("删除成功,删除数据是%d",val);..."); 41 } 42 else{ 43 printf("链表"); 44 } 45 46 int len = length_list...最后一步把新结点地址复制给尾节点(就是让新结点成为尾节点) 84 // pHead->pNext = pNew; 85 // pNew->pNext=NULL;//最后一个结点指针域为...179 //重新使p节点指向p节点之后节点指针域(p节点后面的节点被删,所以p节点一个一个节点地址) 180 free(q);//释放q节点内存 181 q=NULL;

51810
  • 纸上谈兵: 表 (list)

    表 表(list)是常见数据结构。从数学上来说,表是一个有序元素集合。在C语言内存中,表储存为分散节点(node)。每个节点包含有一个元素,以及一个指向下一个(或者上一个)元素指针。...上面的表中,指针指向是从前向后,称为单向链表(linked list)。还有双向链表(double-linked list),即每个节点增加一个指向前面一个元素指针。...以及循环链表(tabular list),最后一个元素指针并不为NULL,而是指向头节点。不同类型链表有不同应用场景。 ? 双向链表 ? 循环链表 ?...双向循环链表 单向链表C实现 一个数据结构实现有两方面: 1. 数据结构内存表达方式; 2. 定义在该数据结构上操作。我们这里实现最简单单向链表。...表所支持操作很灵活多样,我们这里定义一些最常见操作。每个操作都写成一个函数

    49680

    C语言中函数为什么只能有一个返回值输出?怎么实现多个值输出?

    这是典型C语言中函数模块中返回问题,算是常见语法细节,很多人觉得C语言已经过时了,只能代表着这类人还不算是真正技术人员,在嵌入式领域C语言依然充当着非常重要角色,C语言在很多领域还是首选编程语言...常见C语言难点有指针,结构体,函数,递归,回调,数组等等,看起来没多少东西,每个概念都能延伸很多功能点,今天题目其实就是函数模块中返回问题,面向对象编程基本单元就属于函数函数包括参数输入,...具体功能实现,最后是结果输出,也就是这个题目的返回值,在正常情况下函数返回值只有一个,但在实际编程中需要用到多个,在设计时候还是归结成一类,如果类型相近可以弄成数组方式,如果类型不太一致直接放在结构体中执行...2.结构体指针返回 结构体是C语言涉及数据结构最直接容器,通常在编程过程中实现一个功能模块,模块中数据通常都会放在一个结构体中,在在功能函数中对结构体中数值进行操作,因为结构体中可以放足够多变量...,如果函数返回值是个指针的话,就能把整个结构体里面的内容返回出来,同样能够达到返回多个数值作用,这种在平常编程过程中用最多,C语言中使用最频繁关键点就是指针了,但也是很多初学者最不好理解知识点

    7.4K30

    【数据结构系列】双向链表

    课后习题 上一篇文章中我们说到单链表,然后最后有一道习题,不知道大家有没有做出来,为了照顾一些还不太会同学,这里专门对这道题进行一个简单讲解,先来看看原题内容: 有一个带头结点链表L = {a1...,唯一需要注意就是循环里有一个判断条件,为什么要判断q非?...语句时就会报错,程序就出现问题了,所以要在使用q变量之前对q进行一个判断。...双链表初始化 那么如何建立一个链表呢?...我们可以发现一个规律,就是如果向一个链表插入结点,也就是p->next = NULL时候,是没有出现问题,然而插入第二个结点时候出现问题,所以我们可以对p指针域做一个判断,下面看代码实现

    55820

    【数据结构系列】单链表

    pHead; } 该函数通过malloc()函数分配一块内存存放头结点,此时链表中没有任何有效数据,我们说此时该链表表。...具体步骤是: 第一个结点->next = 头结点->next; 头结点->next = 第一个结点; 此时第一个结点成功挂到链表中,并且指针域为NULL,需要注意是,链表不存在结点上限问题,除非内存不够用了...可能很多同学不明白为什么这样,那么再挂上一个结点的话,效果应该会很明显。 ?...->data; return 1; } 通过这几个操作大家也能发现,通过指针能够间接地返回多个值,例如这里查找操作,该函数返回值表示是查找是否成功,那如何返回查找到元素值呢?...下面说说如何销毁一个链表先说一下思路,首先定义一个p指向头结点pHead,然后我们定义一个q指向头结点一个结点,即:第一个有效结点,我们对q进行非判断,此时有两种可能,该链表可能是一个表,

    52720

    React进阶(4)-拆分Redux-将store,Reducer,action,actionTypes独立管理

    ,以及store 抽离容器组件 完整TodoList代码 这是上一节完整一todolist代码,创建store,reducer,以及action,UI组件等都是混写在一个文件当中,这样虽然没有什么问题...创建reducer函数,管理组件共享数据状态以及一些动作 // reducer是一个函数,返回一个state给store // 4....,至于初学者,那肯定觉得特么复杂,非常绕以及难以理解,其实只要把Redux工作流程图理清楚了,也就自然为什么要这么拆分了 通常来说,我们把上面的action都放在一个action Creators.js.../actionTypes'; // 引入actionTypes // 将action封装成一个函数,用于返回type类型和需要参数 function getInputChangeAction(value...,圆括号可以省略,当返回值有多个时,外面需要用一个大括号包裹起来     type: DELETE_LIST,     index }) */ // 将变量对象函数给暴露出去 export {

    1.9K11

    为什么要重写 hashCode 和 equals 方法?

    以前面试时候被面试官问到过这样一个问题: 你有没有重写过 hashCode 方法? 心里想着没事重写哪玩意干啥,能不写就不写。嘴上当然没敢这么说,只能略表遗憾说抱歉,没写过。...撇了面试官一眼,明显看到他对这个回答不满意,但是这已经触及到我知识盲点了,也很惭愧,可是确实没有重写过,咱也不能胡扯不是。...然后他又问到另外一个问题: 你在用 HashMap 时候,键(Key)部分,有没有放过自定义对象?...放过,很自信放过(其实忘了有没有放过),但是不能怂啊,第一个都不会了,第二个再说不会哪不是直接拜拜要走人了吗?...虽然我们还是无法彻底避免 Hash 值冲突问题,但是 Hash 函数设计合理,仍能保证同义词链表长度被控制在一个合理范围里。

    51820

    【数据结构】线性表代码实现:顺序存储结构 | 链式存储结构

    : 1.插入具体数据是什么 2.往那个单链表里面插入 关键: 涉及到了查找问题(插入不一定要查找,具体问题具体分析) */ void ListnIsert(Node* node, int i, int...} //单链表删除 /* 参数: 1.删除具体数据是什么 2.往那个单链表里面删除 关键: 涉及到了查找问题 如何定位:定位到待删除元素一个元素比较好 */ void Delete(Node...如果是按照顺序插入到所有数据后面,则按照正常中间插入函数插入即可。 如果是插入到与这个元素相同旁边则没有必要运行插入函数,只需要再定义一个数据,记录重复数据。...L->next; /* 让p指向链表L一个结点 */ j = 1; /* j为计数器 */ while (p && j<i) /* p不为或者计数器j还没有等于i时,循环继续 */.../* 若备用空间链表,则返回分配结点下标,否则返回0 */ int Malloc_SSL(StaticLinkList space) { int i = space[0].cur;

    1.5K30

    React进阶(4)-拆分Redux-将store,Reducer,action,actionTypes独立管理

    ,UI组件等都是混写在一个文件当中,这样虽然没有什么问题,但是维护起来,非常痛苦 如果一个文件里代码行数超过了130行,就应该考虑拆分代码了,当然这并不是硬性规定,适当拆分有利于代码维护,但是过度拆分...创建reducer函数,管理组件共享数据状态以及一些动作 // reducer是一个函数,返回一个state给store // 4....,也就自然为什么要这么拆分了 通常来说,我们把上面的action都放在一个action Creators.js文件中去管理,管理这个action文件代码名字并不是固定,你想要怎么定义成管理action.../actionTypes'; // 引入actionTypes // 将action封装成一个函数,用于返回type类型和需要参数 function getInputChangeAction(value...,圆括号可以省略,当返回值有多个时,外面需要用一个大括号包裹起来 type: DELETE_LIST, index }) */ // 将变量对象函数给暴露出去 export {

    1.7K10

    三分钟基础知识:什么是栈?

    2 栈实现 我们前边文章也讲过,所有的数据结构基本都是由数组和链表演化而来,所以今天讲栈这种数据结构也例外。...String pop() { // 栈为,则直接返回 null if (count == 0) return null; // 返回下标为 count-1 数组元素...4.1 应用一 :栈在函数应用 函数我们每个人再熟悉不过了,你是不是很纳闷,栈怎么会在函数中能够应用到呢,学了这几年函数咋不知道函数中还有栈操作。...我们这时要想一个问题,那为什么函数会使用栈这种数据结构呢,为什么不用队列、链表或者其他数据结构?全体注意,重点来了,以后分析其他问题也用到一下方法分析。...因为函数调用执行顺序符合后进者先出,先进者后出特点。 比如函数局部变量声明时间顺序,早先定义变量在内存中保存时间长,后定义变量在内存中保存时间短,所有有一个先后问题

    1.8K10

    数据结构与算法——单链表

    但是我们发现内存使用空间为 1500 ,剩余空间仍有 1400 个数据空间,但由于这 1400 个数据空间连续,导致创建数组失败。...2.2 指针大小 指针占据内存大小只要用函数 sizeof(指针类型) 即可计算出。例如:在 32 位平台里,指针本身占据了 4 个字节长度,在 64 位平台,指针占据 8 个字节大小。...那么,如何利用指针解决这一问题呢? 首先,指针中存储是一块内存地址,并且通过该地址可以获取变量内容。...通过指针可以将大小为N数据分别存储至 M1、M2 和 M3 大小空间内。这种方式可以避免连续内存不足引发内存分配失败问题。...3.2 单链表节点 在 2.3 节中,构造既能存储数据又能存储地址数据单元称为单链表节点,单链表节点分为两部分: 1 数据域:存储数据 2 指针域:存储后续节点内存地址,即指向下一个节点。

    44310

    【数据结构】——单链表超详细介绍(小白必看!!!)

    链表结构: 链表是由一个个结点组成,结点如下图所示: 注意:链表最后一个结点next指向,next=NULL。...一个个结点串成了链表,如下图所示: 有人可能会有疑问,不是说链表只是在逻辑结构上是连续,在物理存储结构上是连续,那为什么上图中一个个结点明明是挨在一起,那么它在物理存储结构上肯定是连续呀,其实不然...有人可能会有疑问,为什么之前打印链表时候不用断言指针,而在尾插时就要断言指针,以及为什么函数形参是二级指针,而不使用一级指针。...void,而是SListNode*,把找到结点地址返回去,这个函数一般会跟结点修改之类函数一起使用。...销毁链表这一块,咱可不敢直接free(phead),因为链表在物理结构上是连续存储,销毁链表必须要一个结点一个结点去销毁!!!!

    37210

    【66期】Java容器面试题:谈谈你对 HashMap 理解

    添加操作执行流程为: 先判断有没有初始化 再判断传入key 是否为,为保存在table[o] 位置 key 不为空就对key 进hash,hash 结果再& 数组长度就得到存储位置 如果存储位置为则创建节点...获取节点操作和添加差不多,也是 先判断是否为,为空就在table[0] 去找值 不为也是先hash,&数组长度计算下标位置 再遍历找相同key 返回值 HashMap 其他操作大同小异,再讲讲...HashMap 是一个并发不安全容器,在迭代操作是采用是fast-fail 机制;在并发添加操作中会出现丢失更新问题;因为采用头插法在并发扩容时会产生环形链表问题,导致CPU 到达100%,甚至宕机...解决并发问题可以采用 Java 类库提供Collections 工具包下Collections.synchronizedMap()方法,返回一个线程安全Map 或者使用并发包下 ConcurrentHashMap...为什么要做那么多扰动处理? 这些问题都要围绕一个点来回答:减少哈希冲突。 (1)容量必须为2 幂是为了增加取值可能性。

    56820

    66.Java容器面试题:谈谈你对 HashMap 理解

    添加操作执行流程为: 先判断有没有初始化 再判断传入key 是否为,为保存在table[o] 位置 key 不为空就对key 进hash,hash 结果再& 数组长度就得到存储位置 如果存储位置为则创建节点...获取节点操作和添加差不多,也是 先判断是否为,为空就在table[0] 去找值 不为也是先hash,&数组长度计算下标位置 再遍历找相同key 返回值 HashMap 其他操作大同小异,再讲讲...HashMap 是一个并发不安全容器,在迭代操作是采用是fast-fail 机制;在并发添加操作中会出现丢失更新问题;因为采用头插法在并发扩容时会产生环形链表问题,导致CPU 到达100%,甚至宕机...解决并发问题可以采用 Java 类库提供Collections 工具包下Collections.synchronizedMap()方法,返回一个线程安全Map 或者使用并发包下 ConcurrentHashMap...为什么要做那么多扰动处理? 这些问题都要围绕一个点来回答:减少哈希冲突。 (1)容量必须为2 幂是为了增加取值可能性。

    4810
    领券