我试图找到循环开始的单链接列表的要点.我想到的是2个指针*慢,*快速移动速度是其他速度的两倍.如果列表在某个时刻有循环
5-6-7-8
| |
1-2-3-4-7-7
Run Code Online (Sandbox Code Playgroud)
慢=快
可以有另一个优雅的解决方案,以便列表只遍历一次?
我有以下代码,但是我不明白为什么以及它输出它的作用.
int main(){
int *i;
int *fun();
i=fun();
printf("%d\n",*i);
printf("%d\n",*i);
}
int *fun(){
int k=12;
return(&k);
}
Run Code Online (Sandbox Code Playgroud)
输出为12和垃圾值.有人可以解释输出吗?
它不应该两次都返回垃圾值吗?
我知道它k是本地的fun(),因此它将存储在堆栈中,并且当它fun()超出范围时它将被销毁.我在这里错过了什么概念?