Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333041
  • 博文数量: 78
  • 博客积分: 2536
  • 博客等级: 少校
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-29 01:50
文章分类

全部博文(78)

文章存档

2011年(1)

2010年(17)

2009年(52)

2008年(8)

我的朋友

分类: C/C++

2008-10-27 17:59:35

利用单循环连表。

#include
#include
typedef struct node
{ int data;
  struct node* link;
}humannode;
#define N 20 ///定义20个人


void jesephu(int m)
{
  humannode *plist=NULL,*list=NULL;
  humannode *newnode=NULL;
  humannode * del=NULL; //删除节点
  plist=(humannode*)malloc(sizeof(humannode));
  list=plist;
  plist->data=1;
  plist->link=plist;
  int n=0;
  int count=1;
 
  for(int i=2;i<=N ;i++)   //初始化循环连表
   {
     newnode=(humannode*)malloc(sizeof(humannode));
     if(newnode==NULL)return ;
     
      newnode->data=i;
      list->link=newnode;
      list=list->link;
    }
 
  list->link=plist;//头节点为plist 构成循环
 
 

 
  while(n  {  while(count     { plist=plist->link;++count;
     }
     del=plist->link;
     printf("%d  out\n",del->data);
  
 
     plist->link=del->link;
     plist=plist->link;
     free(del);  

     n++; 
     count=1;
    
   


   }

 

 }


int main()
{
  jesephu(3);
 // system("pause");
  return 0;
 

}

 
阅读(1507) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-02-13 10:16:14

请问要怎么实现键盘输入啊