데이터 구조 재 미 있 는 문제 - 조세 프 링
10498 단어 데이터 구조
1: #include <stdio.h>
2: #include <stdlib.h>
3:
4: /* */
5: typedef struct node {
6: int number; /* */
7: int psw; /* */
8: struct node *next;
9: } LNode, *LinkList;
10:
11:
12: void insertList(LinkList *list, LinkList q, int e1, int e2) {
13: LinkList p;
14: p = ( LinkList)malloc(sizeof(LNode));
15: p->number = e1;
16: p->psw = e2;
17:
18: if(!*list) {
19: *list = p;
20: p->next = NULL;
21: }
22: else {
23: p->next = q->next;
24: q->next = p;
25: }
26: }
27:
28:
29:
30: void CreatJoseph(LinkList *jsp , int n)
31: {
32: LinkList q = NULL , list = NULL;
33: int i , e2;
34: printf("Please input the password for people in the Joseph circle
");
35:
36: for(i = 0; i < n; i++) {
37: scanf("%d", &e2);
38: insertList(&list, q, i + 1, e2); /* q */
39:
40: if(i == 0) q = list; /* ,q */
41: else q = q->next; /*q */
42: }
43:
44: q->next = list; /* */
45:
46: *jsp = list; //
47: }
48:
49:
50: void exJoseph(LinkList *jsp, int m)
51: {
52: LinkList p , q;
53: int i;
54: q = p = *jsp ;
55:
56: while(q->next != p) q = q->next; /*q p */
57:
58: printf("The order of a column is
") ;
59:
60: while(p->next != p) {
61: for(i = 0; i < m - 1; i++)
62: { /*p ,q p */
63: q = p;
64: p = p->next;
65: }
66:
67: q->next = p->next;
68: printf("%d ", p->number);
69: m = p->psw;
70: free(p);
71: p = q->next;
72: }
73:
74: printf("
The last person in the circle is %d
", p->number); /* */
75: }
76:
77: int main()
78: {
79: LinkList jsp;
80: int n , m;
81: printf("Please input number of the people in the Joseph circle
");
82: scanf("%d", &n) ;
83: CreatJoseph(&jsp, n);
84: printf("Please input the first maximum number
");
85: scanf("%d", &m) ;
86: exJoseph(&jsp, m) ;
87: }