1、怎么判断链表中是否有环?
答:用两个指针来遍历这个单向链表,第一个指针p1,,每次走一步,第二个指针p2,每次走两步,当p2指针追上p1的时候,就表明链表当中有环路了。
int testLinkRing(Link *head)
{
Link *t1 = head, *t2 = head;
while(t1->next && t2->next)
{
t1 = t1->next;
t2 = t2->next->next;
if(t2 == NULL){
return 0;//not have ring
}
if(t1 == t2)
return 1;
}
return 0;
}
2、计算字符串中子串出现的次数。
void main()
{
char str1[20],str2[20],*p1,*p2;
int sum = 0;
printf("please input two strings:\n");
scanf("%s%s",str1,str2);
while(*p1 != '\0') {
if(*p1 == *p2)
{
while(*p1 == *p2 && *p2!='\0')
{
p1++;
p2++;
}
}
else{
p1++;
}
if(*p2 == '\0')
sum++;
p2 = str2;
}
printf("%d",sum);
}