锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2 #include <stdlib.h>
3 //綰︾憻澶幆鐨勫疄鐜幫細(xì)涓緹や漢鍥存垚涓鍦堬紝榪欑兢浜哄叡鏈?nbsp;n涓漢錛屾瘡涓漢韜笂閮戒竴涓猭ey錛屼緷嬈$粰榪欏湀浜虹紪鍙鳳細(xì)
4 //1錛?/span>2錛?img src="http://www.shnenglu.com/Images/dot.gif">n 涓寮濮嬫姤鏁扮殑涓婇檺鍊間負(fù)m浠庣涓涓漢錛堢紪鍙鳳細(xì)1錛夎嚜涓寮濮嬫姤鏁版姤鍒癿鏃跺仠姝㈡姤鏁幫紝鎶ュ埌m鐨勪漢鍑哄垪錛?br> 5 //灝嗕粬鐨勫瘑鐮佸仛涓烘柊鐨刴鍊鹼紝浠庝粬鐨勯『鏃墮拡鏂瑰悜寮濮嬬殑涓嬩釜浜哄紑濮嬩粠鏂頒粠涓鎶ユ暟錛屽姝や笅鍘伙紝鐩磋嚦鎵鏈夌殑浜哄嚭鍒椾負(fù)姝?nbsp;
6 typedef struct Node
7 {
8 int key;//姣忎釜浜鴻韓涓婂甫鐨刱ey
9 int NUM;//姣忎釜浜虹殑緙栧彿
10 struct Node *next;
11 }Node;
12 //=========================
13 int n;//鎬誨叡鐨勪漢鏁?nbsp;
14 Node *L=NULL;//寰幆閾捐〃鎸囬拡
15 //=========================
16 void InitList(int x)//鍒濆鍖栫涓涓妭鐐癸紝榪欎釜鑺傜偣鏈夊疄闄呯殑鎰忎箟
17 {
18
19 L = (Node*)malloc(sizeof(Node));
20 if(!L)
21 {
22 printf("malloc fail\n");
23 system("PAUSE");
24 exit(1);
25 }
26 L->NUM=1;
27 L->key=x;
28 L->next=L;
29 }
30 //===========================================
31 void DelNode(Node *p_front)//p_front鎸囧悜鐨勬槸p鐨勫墠涓涓妭鐐癸紝鍒犻櫎鐨勫嵈鏄痯
32
33 {
34 Node *tmp=p_front->next;
35 p_front->next = tmp->next;
36 free(tmp);
37 }
38 //============================================
39 void CreateList(void)//鍒涘緩寰幆閾捐〃
40 {
41 printf("Players n=");
42 scanf("%d",&n);
43 while(n<1||n>30)
44 {
45 printf("n must >=1 && <=30\n");
46 printf("Players n=");
47 scanf("%d",&n);
48 }
49 int key_tmp;
50 printf("NUM=1 key=");
51 scanf("%d",&key_tmp);
52 while(key_tmp<1||key_tmp>300)
53 {
54 printf("key must >0&&<=300\n");
55 printf("NUM=1 key=");
56 scanf("%d",&key_tmp);
57 }
58 InitList(key_tmp);
59 int i;
60 Node *s,*p=L;
61 for( i=2;i<=n;i++)
62 {
63 s=(Node*)malloc(sizeof(Node));
64 if(!s)
65 {
66 printf("malloc error\n");
67 system("PAUSE");
68 exit(1);
69 }
70 printf("NUM=%d key=",i);
71 scanf("%d",&key_tmp);
72 while(key_tmp<1||key_tmp>300)
73 {
74 printf("key must >0 && <=300");
75 printf("\nNUM=%d key=",i);
76 scanf("%d",&key_tmp);
77 }
78 s->key=key_tmp;
79 s->next=L;//鏋勬垚寰幆閾捐〃鐨刵ext鎸囬拡璧嬪?nbsp;
80 p->next=s;
81 s->NUM=i;
82 p=s;//鎸囬拡p寰鍓嶇Щ鍔?nbsp;
83 }
84 }
85 //=============================================
86 void PlayGame(void)//寮濮嬫父鎴忥紒鎶ユ暟
87 {
88 Node *p=L;
89 Node *p_front=L;
90 int m;
91 printf("start game !\n");
92 printf("m=");
93 scanf("%d",&m);
94 while(m<1||m>300)
95 {
96 printf("m must >0 && <=300\n m=");
97 scanf("%d",&m);
98 }
99 int i;
100 int count = n;
101 for(i=1;i<=m;i++)
102 {
103 // printf("num =%d key=%d\n",p->NUM,p->key);
104
105 if(m==i)
106 {
107
108 m=p->key;
109 i=0;
110 printf(" %d",p->NUM);
111 DelNode(p_front);
112 p=p_front;
113 count--;
114 if(count==1)
115 {
116 printf(" %d",p->NUM);
117 //printf("num =%d key=%d\n",p->NUM,p->key);
118 printf(" all out !\n");
119 system("PAUSE");
120 exit(0);
121 }
122
123 }
124 p_front=p;
125 p=p->next;
126
127 }
128 }
129 //==================================================
130 int main(int argc, char *argv[])//榪愯娓告垙錛?nbsp;
131 {
132 CreateList();
133 PlayGame();
134 system("PAUSE");
135 return 0;
136 }
137
]]>