큐 소스입니다.



#include <stdio.h>
#include <stdlib.h>

// 큐 크기
#define QSIZE	(5)

// 큐 선언
int queue[QSIZE];
int front, rear;	// front == 0, rear == 0

int is_full() { return rear == QSIZE; }
void put(int data)
{
	queue[rear] = data;
	rear++;
}

int is_empty() { return front == rear; }
int get()
{
	int temp = queue[front];
	front++;
	return temp;
}

// 큐 출력
void display()
{
	int i;

	system("cls"); // 콘솔창 초기화
	printf("\n");

	printf("%*s\n", (rear+1)*4, "rear");
	printf("%*s\n", (rear+1)*4, "  | ");

	for(i=0; i< QSIZE; i++)
		printf("[%2d]", queue[i]);

	printf("\n");
	printf("%*s\n", (front+1)*4, "  | ");
	printf("%*s\n", (front+1)*4, "front");
	getchar();
}
void main()
{
	int i;

	display();
	for(i=0; i<7; i++)
	{
		if(!is_full())
			put(i+1);
		display();
	}

	for(i=0; i<7; i++)
	{
		if(!is_empty())
			get();
		display();
	}
}

'Programming > 자료구조&알고리즘' 카테고리의 다른 글

[자료구조] 기본 Queue 소스  (0) 2014.03.21
[자료구조] 기본 Stack 소스  (0) 2014.03.18

스택 소스 입니다.



#include <stdio.h>
#include <stdlib.h>

// 스택 크기
#define STACK_MAX (5)

// 스택 선언
int arr[STACK_MAX];
int top = -1;

void push(int data) { arr[++top] = data; }

int pop() {	return arr[top--]; }

int is_full() { return top == STACK_MAX-1; }

int is_empty() { return top == -1; }

// 스택 출력
void display() {
	int i;

	system("cls"); // 콘솔창 초기화
	printf("\n");

	for(i = 0; i < STACK_MAX; i++) {
		if(STACK_MAX-1-i > top)
			printf("[     ]");
		else
			printf("[  %2d ]", arr[STACK_MAX-1-i]);

		if(STACK_MAX-1-i == top) printf(" <- TOP");
		printf("\n");
	}
	if(is_full()) printf("STACK IS FULL\n");
	if(is_empty()) printf("STACK IS EMPTY\n");
	getchar();
}

int main() {
	int i;

	display();
	for( i=0; i<10; i++ )
	{
		if(!is_full()) push(i+1);
		display();
	}

	for( i=0; i<10; i++ )
	{
		if(!is_empty())	printf("%d ", pop());
		display();
	}

	return 0;
}

'Programming > 자료구조&알고리즘' 카테고리의 다른 글

[자료구조] 기본 Queue 소스  (0) 2014.03.21
[자료구조] 기본 Stack 소스  (0) 2014.03.18

+ Recent posts