单链表的查找求助
无序、递增、递减三种单链表的查找有区别吗? 我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白地狱泰隆 发表于 2018-10-21 22:42
我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白
我学的一般,基础已经过了一遍了! 地狱泰隆 发表于 2018-10-21 22:42
我感觉没有区别,你学习到哪了。咱们可以 一起学习。我是小白
学的一般般啊!要不然也不会问这么简单的问题! 能有什么区别?递增或递减就比较好找,一旦超出范围就可以宣告找不到,无序就必须从头到尾找一遍 claws0n 发表于 2018-10-21 23:07
能有什么区别?递增或递减就比较好找,一旦超出范围就可以宣告找不到,无序就必须从头到尾找一遍
好像是有序时候可以加个条件判断,不符合就直接退出! Maoyu00 发表于 2018-10-21 23:10
好像是有序时候可以加个条件判断,不符合就直接退出!
宣告找不到就是退出函数,不?么么~~ 无序这种找法我没听说过,但是递增和递减可以简单的这样理解:
1、递增,当你要查找的目标是在你链表中间的左边时(也就是比你链表的中间小),那我们就从头指针开始递增往后找
2、递减,当你要查找的目标是在你链表中间的右边时(也就是比你链表的中间大),那我们就从尾指针开始递减往前找
这样做的目的很简单,提高效率,你不用从头到尾把链表遍历一遍就可以找出你想要的目标
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]