- 本文参照严蔚敏《数据结构(C语言版)题集》一书中包含的问答题和算法设计题目,提供解答和算法的解决方案。
- 请读者在自己已经解决了某个题目或进行了充分的思考之后,再参考本解答,以保证复习效果。
- 由于作者水平所限,本解答中一定存在不少这样或者那样的错误和不足,希望读者们在阅读中多动脑、勤思考,争取发现和纠正这些错误,写出更好的算法来。
下列算法是从表中删除自第个元素起共个元素后,
将它们插入到表中第个元素之前。
试问此算法是否正确?若有错,则请改正之。
解:
注意此题中的条件是,采用的存储结构(单链表)中无头结点,
因此在写算法时,特别要注意空表和第一个结点的处理。
算法中尚有其他类型的错误,如结点的计数,修改指针的次序等。
此题的正确算法如下:
为了在函数中解决从无头链表中的首元开始,删除其中结点,
需要传入无头链表首元指针的地址,这样才可以让该指针指向新的首元。
在具体细节上,要注意的是:
首先过滤i值为0的情况,它不能等同于从第一个元素开始,也可被算作越界,
其次,当len值为0的时候,就不需要删除和插入了,直接返回OK。
此外,在测试函数中,会遇到:
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qkl-jc/24928.html