百科问答小站 logo
百科问答小站 font logo



链表求交集,从链表头删去一长串而非一个节点?(已解决)? 第1页

  

user avatar   s.invalid 网友的相关建议: 
      

思路错误。再检查检查你的83行,不行单步跟踪一下,看看它究竟做了什么、想想你的这个思路可不可能得到你想要的结果。


此外,这个程序的效率也很成问题。比如删除,每次还要从头查找一次,这就成了O(N)的效率;实际上直接传当前节点进去可以O(1)删除。


事实上,你的整体思路从一开始就有问题。两个排过序的链表……这实质上就是明示你用归并排序。O(N)的效率完成合并,合并过程中随手剔除无法匹配的元素即可。

一定要先想通整个逻辑,确保它一定能达到目的,这才能动手敲代码。你这一开始就没想明白,直接动手写代码,肯定越搞越扑朔迷离。


最后,再提醒一下:你自己实现了程序、且指出了具体问题,这很好(我也正是看在这个份上才读了你的源码);但发代码求助时,最好直接发文本格式的源码拷贝,不要发截图


这是因为,用人脑模拟电脑思考很累;甚至可以说,绝大多数程序员都还没有这个能力——起码要有能力“人脑部分模拟CPU”、同时对链表相关算法了如指掌的水准,才可能通过看源码直接分析程序执行细节、找到问题所在。


因此,如果你直接发文本,那么热心人拷到自己的编辑器里一跑,很容易就能找到问题所在;但如果你发截图,那么很多人就不得不自己把你的代码一点点照图敲进去、然后才能调试;即使那些有能力直接从源码看出问题的,人家开个IDE不比费老大劲儿当人肉编译器轻省?


与人方便,自己方便。替那些可能帮你的人考虑一下,你得到帮助的几率就会更高。




  

相关话题

  如何证明一个数 n 的因子之和是 O(n) 的? 
  为什么说程序员要贷款买房之前最好先学好数据结构和算法? 
  如何滴水不漏的学完C语言? 
  网上常能见到的一段 JS 随机数生成算法如下,为什么用 9301, 49297, 233280 这三个数字做基数? 
  使用数组可以表示哪些数据结构? 
  LBS数据库的架构是怎样的? 
  c++ 为何开源库都要编译? 
  有人对 C++ 基本数据类型采用 int x{5}; 的方式进行初始化吗? 
  Android 将来能否实现用 C/C++ 作为开发语言?还是说现在的架构就注定了只适合用 Java? 
  平滑的战争迷雾效果是如何实现的? 

前一个讨论
如果推荐一部电影,你会推荐哪部?
下一个讨论
笔记本支架有必要买的吗?





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利