我是靠谱客的博主 迷路电话,最近开发中收集的这篇文章主要介绍C语言使用技巧(二十二):算法技巧:while(1)与if循环的循环扣圈搜索与路径节点搜索,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
不要小看这个技巧,当你使用它的时候就知道它的威力:如数据点搜索、点云ID搜索、最短路径经过的节点搜索等都会用到。
先来看看语法:
如果表达式为真就继续执行,如果内部没有条件终止执行结果,则会一直执行下去:
#include<stdio.h>
int main(void)
{
int i = 1;
while(1)
{
if(i--)
{
printf("%d ", i);
}
}
return 0;
}
执行结果:
如果给出条件,则跳出循环
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
while (1)
{
printf("%d ", i);
if (i == 10)
{
break;
}
i = i +1;
}
system("pause");
return 0;
}
执行结果:
如果将上面的算法应用在数组中,可以看到
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 1;
int arr[3] = {2,2,3};
while (1)
{
printf("end_point=%dt", i);
//如果等于3就输出,否则继续执行下一步循环,一直将这里的i下一步赋值给arr[i]
//这里的3其实就是寻找数组中的元素3
if (i == 3)
break;
i = arr[i];
}
system("pause");
return 0;
}
执行结果:
我们可以换一换更长的数组来搜索从某一点走到另一点的方法:我们这里可以先来看看不能走通的数据元素
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 1;
int arr[10] = {1, 4, 7, 3, 9, 0, 3, 5, 8, 2};
// int arr[3] = {2,2,3};
while (1)
{
printf("end_point=%dt", i);
if (i == 3)
break;
i = arr[i];
}
system("pause");
return 0;
}
执行结果:
可以发现,这个是死循环,而且是扣圈,为什么是扣圈循环呢,因为循环每一行都是:
end_point=4 end_point=9 end_point=2 end_point=7 end_point=5 end_point=0 end_point=1
这里循环的右边是0,然后数组的arr[0]正好是1,此时还是不能满足i==3的条件,因此无法找到跳出的路径,只能继续循环。
如果替换一个条件
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 1;
int arr[10] = {1, 4, 7, 3, 9, 0, 3, 5, 8, 2};
// int arr[3] = {2,2,3};
while (1)
{
printf("end_point=%dt", i);
if (i == 9)
break;
i = arr[i];
}
system("pause");
return 0;
}
执行结果:并且也打印了途中经过的点
以上方法给路径算法、选择起点到终点等方面的技巧有很大的帮助。
最后
以上就是迷路电话为你收集整理的C语言使用技巧(二十二):算法技巧:while(1)与if循环的循环扣圈搜索与路径节点搜索的全部内容,希望文章能够帮你解决C语言使用技巧(二十二):算法技巧:while(1)与if循环的循环扣圈搜索与路径节点搜索所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复