Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22742
  • 博文数量: 11
  • 博客积分: 1421
  • 博客等级: 上尉
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 20:17
文章存档

2011年(1)

2010年(1)

2009年(9)

我的朋友
最近访客

分类: C/C++

2009-10-02 19:37:09

完成下列程序(不要调入出题人的陷阱)
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
#include
#define N 8
int main()
{
   int i;
   int k;
   ---------------------------------------------------------
   |                                                        |
   |                                                        |
   |                                                        |
   ---------------------------------------------------------
   return 0;
}
一:
 
 for(i=0;i {
  for(k=0;k<=i;k++)
  {
   printf("*");
   for(int j=0;j<=i;j++) printf(".");//把变量定义放在这
  }
  printf("\n");
 }
 
二:
 
for (i = 1; i <= N; i++)
 {
  for (k = 1; k <= i*i; k++)
  {
   if( (k % i == 1)||(i==1))
    printf("*");
   else
    printf("."); 
  }
  printf("\n");
  
 }
 
 
循环
一个长度未知的单向链表可能内含循环(最后一个节点指向链表中的另一个节点,而不是指向NULL).假设你只能使用两个指针,
它们初始化时都指向这个单向链表头,说明你怎么去判断这个链表中是否内含循环?(链表内的节点数时有限的,而你必须证明
do
{
   if(p1 == NULL)
       return FALSE;
   else
       p1 = p1->next;
   if(p2 == NULL)
       return FALSE;
   else
       p2 = p2->next;
   if(p2 == NULL)
       return FALSE;
   else
       p2 = p2->next;
}while(p1 != p2);
return TRUE;
当步长为2的指针跟步长为1的指针在同一起点一起向前运动的时候,  
  可以注意到步长为2的指针(记为p2)  
  相对于步长为1的指针(记为p1)的速度为1,  
  当单向链表中存在环的时候,这两个指针总会在某一时刻同时  
  进入这个环,而由于刚才说的相对速度为1,  
  不妨设这个环的长度为L,从p2顺时针到p1的距离为D(即追赶p1),  
  那么经过D步后,p2赶上p1,即p2=p1。  
  于是在这个过程中如果p2=p1,那么有环,  
  如果没环那么程序总会遇到Null而结束。
阅读(665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~