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



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

  

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

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


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


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

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


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


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


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


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




  

相关话题

  如何看待「原谅宝」? 
  fopen()的第二个参数为什么会采用字符串形式? 
  C++对一个map不断insert delete元素(多任务中的一个任务),是否存在内存碎片问题? 
  比特币的算法到底在算什么? 
  C++中 union 储存的 char 成员能否通过 int 成员读取? 
  在C++中,“?:”这个符号叫什么名字? 
  学了四年算法,码了五万行代码,但是大一期末C语言模拟及不了格怎么办? 
  有哪些关于C++高性能服务器开发的高质量博客? 
  负数与负数相乘为什么会得正? 
  想学好计算机算法,是否需要重新学数学呢? 

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





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