Fibonacci Sequence Source
#include <stdio.h> #define MAX_QUEUE_SIZE 5 typedef int element; typedef struct { element data[MAX_QUEUE_SIZE]; int front, rear; }QueueType; typedef QueueType * QueueType_ptr; QueueType q; void init(QueueType_ptr q) { q->front = 0; q->rear = 0; } int is_empty(QueueType q) { if (q.front == q.rear) return 1; else return 0; }; int is_full(QueueType q) { if ((q.rear + 1) % MAX_QUEUE_SIZE == q.front) return 1; else return 0; } void enqueue(QueueType_ptr q, int item) { if (!is_full(*q)) { q->rear = (q->rear + 1) % 5; q->data[q->rear] = item; } else printf("큐가 꽉 찼습니다"); } int dequeue(QueueType_ptr q) { if (!is_empty(*q)) { q->front = (q->front + 1) % 5; return q->data[q->front]; } else printf("큐가 비어 있습니다"); } int peek(QueueType q) { if (!is_empty(q)) return q.data[(q.front+1)%MAX_QUEUE_SIZE]; else printf("큐가 비어 있습니다"); } int F(int n) { if (n == 0) return 0; else if (n == 1) return 1; else { int first, second; //첫 번째 요소, 두 번째 요소 enqueue(&q, 0); enqueue(&q, 1); for (int i = 1; i < n; i++) { first = dequeue(&q); // 첫 번째 요소 second = peek(q); enqueue(&q, first + second); } dequeue(&q); return dequeue(&q); } } int main(void) { init(&q); for (int i = 0; i < 20; i++) printf("%d ", F(i)); system("pause"); }