728x90
문제 :: 원형으로 N명 만큼 둘러 앉아서 K번째 사람을 한명씩 처형시킬 때 처형되는 순서를 출력
입력 : 포로수 처형위치 (ex)
N K
5 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //.cpp typedef struct tag_list { int iData; // integer 형을 저장하는 변수 struct tag_list* p_Link; }List; void push(List** p_Head, List** p_Cur, int iData); int pop(List** p_Cur, List* p_Prev); int iArray[1000]; void main() //.cpp { List* p_Head = NULL; // LIST의 시작점 List* p_Cur= NULL; // 리스트의 현재 사용할 위치를 가리킬 커서역활 // Push 때는 추가된 곳을 가리키고, POP 때는 삭제 된 노드의 이전을 가리킨다. List* p_CurPrev; // pop연산을 위하여 현재 가리키는 위치의 전 노드를 가리킴 int N, K; // N 포로 수 , K 처형 위치 값 int iCount = 0; // 남은 인원수 카운트용 scanf("%d %d", &N, &K); for(int i = 0; i < N; i++) { push(&p_Head, &p_Cur, i+1); } p_Cur = p_Head; while(iCount != N-1) { for(int i = 0; i < K-1; i++) { p_CurPrev = p_Cur; p_Cur = p_Cur->p_Link; } iArray[iCount] = pop(&p_Cur, p_CurPrev); iCount++; } printf("%d\n",p_Cur->iData); for(int i = 0; i < N-1; i++) { printf("%d ",iArray[i]); } } void push(List** p_Head, List** p_Cur, int iData) { List* p_NewNode = new List; p_NewNode->iData = iData; if(*p_Head == NULL) { *p_Head = p_NewNode; p_NewNode->p_Link = *p_Head; } else { p_NewNode->p_Link = (*p_Cur)->p_Link; (*p_Cur)->p_Link = p_NewNode; } *p_Cur = p_NewNode; } int pop(List** p_Cur, List* p_CurPrev) { int remove_data; List* p_removeNode; p_removeNode = *p_Cur; remove_data = p_removeNode->iData; p_CurPrev->p_Link = p_removeNode->p_Link; *p_Cur = p_CurPrev->p_Link; delete(p_removeNode); return remove_data; } | cs |
혹여 과제기간은 지났지만 궁금할수도 있는 후배님들을 위해 올려봅니다.
'알고리즘-자료구조' 카테고리의 다른 글
[개탱][C][C++][2차원배열][operator overloading][행렬] (0) | 2018.01.02 |
---|---|
[개탱][C][행렬의 합, 행렬의 곱 . . ][Dynamic allocation] (0) | 2017.12.21 |
[개탱][C][컴공과제][희소행렬의 합구하기][파일 입출력][구조체] (0) | 2017.12.21 |
[개탱][C언어][하노이탑][간단한 알고리즘][재귀][Stack][스택][그래픽화][그래픽][도형] (0) | 2017.12.21 |
[개탱][C언어][하노이탑][간단한 알고리즘][재귀호출][재귀함수][Stack][스택] (0) | 2017.12.21 |
댓글