鱼C论坛

 找回密码
 立即注册
查看: 2295|回复: 8

[已解决]单链表的查找求助

[复制链接]
发表于 2018-10-21 22:40:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
无序、递增、递减三种单链表的查找有区别吗?
最佳答案
2018-10-23 15:48:52
        public Node node(int index){
                Node temp = null;
                if(first!=null){
                        if(index<(size>>1)){                //提高效率
                                temp = first;
                        for(int i = 0;i<index;i++){
                                temp = temp.next;
                        }
                        }else{
                                temp = last;
                                for(int i = size-1;i>index;i--){
                                        temp = temp.previous;
                                }
                        }
                       
                }
                return temp;
        }

具体的代码实现如上,指定一个下标,返回所指定下标的元素,first是头结点,last是尾结点,当然,这些节点类型是我定义在一个结点类中的,所以就不贴出来了,还有什么问题可以提出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-21 22:42:01 | 显示全部楼层
我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-21 22:58:45 | 显示全部楼层
地狱泰隆 发表于 2018-10-21 22:42
我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白

我学的一般,基础已经过了一遍了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-21 22:59:22 | 显示全部楼层
地狱泰隆 发表于 2018-10-21 22:42
我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白

学的一般般啊!要不然也不会问这么简单的问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:07:29 | 显示全部楼层
能有什么区别?递增或递减就比较好找,一旦超出范围就可以宣告找不到,无序就必须从头到尾找一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-21 23:10:13 | 显示全部楼层
claws0n 发表于 2018-10-21 23:07
能有什么区别?递增或递减就比较好找,一旦超出范围就可以宣告找不到,无序就必须从头到尾找一遍

好像是有序时候可以加个条件判断,不符合就直接退出!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:11:53 | 显示全部楼层
Maoyu00 发表于 2018-10-21 23:10
好像是有序时候可以加个条件判断,不符合就直接退出!

宣告找不到就是退出函数,不?么么~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 15:46:11 | 显示全部楼层
无序这种找法我没听说过,但是递增和递减可以简单的这样理解:
1、递增,当你要查找的目标是在你链表中间的左边时(也就是比你链表的中间小),那我们就从头指针开始递增往后找
2、递减,当你要查找的目标是在你链表中间的右边时(也就是比你链表的中间大),那我们就从尾指针开始递减往前找
这样做的目的很简单,提高效率,你不用从头到尾把链表遍历一遍就可以找出你想要的目标
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 15:48:52 | 显示全部楼层    本楼为最佳答案   
        public Node node(int index){
                Node temp = null;
                if(first!=null){
                        if(index<(size>>1)){                //提高效率
                                temp = first;
                        for(int i = 0;i<index;i++){
                                temp = temp.next;
                        }
                        }else{
                                temp = last;
                                for(int i = size-1;i>index;i--){
                                        temp = temp.previous;
                                }
                        }
                       
                }
                return temp;
        }

具体的代码实现如上,指定一个下标,返回所指定下标的元素,first是头结点,last是尾结点,当然,这些节点类型是我定义在一个结点类中的,所以就不贴出来了,还有什么问题可以提出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 15:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表