code

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef struct LNode
 4 {
 5     int code,number;
 6     struct LNode * next;
 7 }LNode,* LinkList;
 8 int Insert_L(LinkList L)
 9 {
10     int n;
11     LNode * s,* p;
12     printf("Please Input the number:\n");              //输入参与人数n;
13     scanf("%d",& n);
14     printf("Please Input the code:\n");                  
15     scanf("%d",& L->code);
16     p=L;                                                                  //指针P指向L表头;
17     n=n-1;
18     for(;n>0;n--)
19     {
20         s=(LNode * )malloc(sizeof(LNode)); //指针s指向开辟的新空间;
21         printf("Please Input the code:\n");   
22         scanf("%d",& s->code);                    //输入密码;
23         s->number=p->number+1;         
24         s->next=p->next;                         
25         p->next=s;                                      
26         p=s;                                                
27     }
28     return 0;
29 }
30 int Getnumber_L(LinkList L,int m)
31 {
32     LNode * q,* p;
33     int i;
34     p=L;
35     while(p->next!=p)
36                 {                                          // 人数至少为2时;
37         i=1;                                                                    
38         while(i!=m)                                      //找到第m个人;
39         {
40             p=p->next;                     //P指针指向下一个;
41             i++;
42                                 }
43         printf("%d ",p->number);               //输出第m个人的编号;
44         m=p->code;                                   //得到第m个人的密码(即下一个人的编号);
45         p->code=p->next->code;             //将p的后驱的信息赋给p指针;
46         p->number=p->next->number;   //同上;
47         q=p->next;                                     //暂时将p的后驱赋给q;
48         p->next=p->next->next;               //将p的后驱的后驱赋给p的后驱;
49         free(q);                                            //释放q指针;
50     }
51     printf("%d\n",p->number);                            //输出最后一个人的编号;
52     return 1;
53 }
54 int main()
55 {
56     int m,n;
57     LinkList L,s,p;
58     if(!(L=(LinkList)malloc(sizeof(LNode))))          //L表为空;
59         exit(0);
60     L->number=1;                                               
61     L->next=L;
62     L->code=0;
63     Insert_L( L);
64     printf("Please Input The First Number:\n");
65     scanf("%d",&m);
66     Getnumber_L(L,m);
67     return 0;
68 }

posted on 2013-12-26 16:40  了发发  阅读(151)  评论(0)    收藏  举报

导航