Maoyu00 发表于 2018-10-21 22:40:29

单链表的查找求助

无序、递增、递减三种单链表的查找有区别吗?

地狱泰隆 发表于 2018-10-21 22:42:01

我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白

Maoyu00 发表于 2018-10-21 22:58:45

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

我学的一般,基础已经过了一遍了!

Maoyu00 发表于 2018-10-21 22:59:22

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

学的一般般啊!要不然也不会问这么简单的问题!

claws0n 发表于 2018-10-21 23:07:29

能有什么区别?递增或递减就比较好找,一旦超出范围就可以宣告找不到,无序就必须从头到尾找一遍

Maoyu00 发表于 2018-10-21 23:10:13

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

好像是有序时候可以加个条件判断,不符合就直接退出!

claws0n 发表于 2018-10-21 23:11:53

Maoyu00 发表于 2018-10-21 23:10
好像是有序时候可以加个条件判断,不符合就直接退出!

宣告找不到就是退出函数,不?么么~~

暗pluto 发表于 2018-10-23 15:46:11

无序这种找法我没听说过,但是递增和递减可以简单的这样理解:
1、递增,当你要查找的目标是在你链表中间的左边时(也就是比你链表的中间小),那我们就从头指针开始递增往后找
2、递减,当你要查找的目标是在你链表中间的右边时(也就是比你链表的中间大),那我们就从尾指针开始递减往前找
这样做的目的很简单,提高效率,你不用从头到尾把链表遍历一遍就可以找出你想要的目标

暗pluto 发表于 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是尾结点,当然,这些节点类型是我定义在一个结点类中的,所以就不贴出来了,还有什么问题可以提出来
页: [1]
查看完整版本: 单链表的查找求助