🐰 덱(deque) ? 덱은 double-ended queue의 줄임말로서 큐의 전단(front)나 후단(rear)에서 모두 삽입과 삭제가 가능한 큐이다. 덱의 연산 create() : 덱 생성 init(dq) : 덱 초기화 is_empty(dq) : 덱이 공백 상태인지 확인 is_full(dq) : 덱이 포화 상태인지 확인 add_front(dq,e) : 덱의 앞에 요소를 추가한다. add_rear(dq,e) : 덱의 뒤에 요소를 추가한다. delete_front(dq) : 덱의 앞에 있는 요소를 반환한뒤 삭제한다. delete_rear(dq) : 덱의 뒤에 있는 요소를 반환한뒤 삭제한다. get_front(q) : 덱의 앞에서 삭제하지 않고 앞에 있는 요소를 반환한다. get_rear(q): 덱의 뒤..
🔔 원형 큐 선형 큐에서 더 발전된 형태인 원형 큐를 살펴보자. 앞서 말했듯 선형 큐는 front와 rear의 값이 계속 증가만 하기 때문에 언젠가는 배열의 끝에 도달하게 되고 배열의 앞부분이 비어 있더라도 사용하지 못한다. 따라서 주기적으로 모든 요소들을 왼쪽으로 옮겨주어야 한다. 즉, 매번 요소들을 이동시키기 위해서는 상당한 시간과 복잡한 코딩이 소요된다. 원형 큐는 이러한 선형 큐들의 문제점을 해결한다. 배열을 선형이 아닌 원형으로 생각을 하는 건데 즉 front와 rear의 값이 배열의 끝인 (MAX_QUEUE_SIZE-1) 에 도달하면 다음에 증가되는 값은 0이 되도록 하는 것이다. 🔔 원형 큐 전체 코드 #include #include #define MAX_QUEUE_SIZE 5 typedef..

💬 큐 앞서 배웠듯 스택의 경우 나중에 들어온 데이터가 먼저 나가는 구조이다. 그러나 큐는 먼저 들어온 데이터가 먼저 나가는 구조이다. 즉, FIFO (First In First Out) 선입선출 형태를 띈다. 데이터는 큐의 후단(rear)에 삽입되고 전단(front)를 통해 나간다. 즉, 삽입과 삭제가 같은 곳이 아니라는 것 ! 더보기 - 전단(front) : 데이터의 삭제 연산 (가장 먼저 들어왔던 데이터가 쌓여있는 쪽) -> dequeue 연산 - 후단(rear) : 데이터의 삽입 연산 (가장 나중에, 최근에 삽입된 데이터가 쌓여있는 쪽) -> enqueue 연산 💬 큐의 연산 enqueue: 큐의 rear 에 새로운 원소를 삽입하는 연산 dequeue: 큐의 front에 있는 원소를 큐로부터 삭제..

먼저 스택을 전역변수(global variable)로 구현해보자. 여기서 전역변수란 중괄호 외부에 선언되는 변수다. #include #include #define MAX_STACK_SIZE 100 typedef int element; element stack[MAX_STACK_SIZE]; int top= -1; int is_empty(void) //공백 상태 검출 함수 { return (top==-1); } int is_full(void) //포화 상태 검출 함수 { return (top==(MAX_STACK_SIZE-1)); } void push(element item) { if(is_full()){ fprintf(stderr,"스택 포화 에러\n"); return; } else stack[++top]..

📌 스택이란 ? 스택은 팬케이크 더미를 떠올리면 이해하기 쉽다. 일반적으로 팬케이크를 쌓는 방향은 아래에서 위이다. 그러나 팬케이크를 먹을 때 우리는 쌓여진 맨 위의 펜케이크부터 먹게된다. 스택도 동일하다. Last In First Out (LIFO), 후입선출의 구조로 가장 나중에 들어간 원소가 가장 먼저 나오게 된다. 📌 스택의 연산 pop(): 스택에서 가장 위에 있는 항목을 제거한다. push(data): data를 스택의 가장 윗 부분에 추가한다. peek(): 스택의 가장 위에 있는 항목을 반환한다. isEmpty(): 스택이 비어 있는 경우 true를 반환한다. 📌 스택 연산 코드 creatStack 함수 : 스택을 생성하는 함수 parameter : 스택관리 구조체의 주소, 스택의 크기 성..
출처 - C언어로 쉽게 풀어쓴 자료구조, 교수님 PPT 📋 자료구조란 ? 사람들이 사물을 정리하여 저장하는 것과 마찬가지로 프로그램에서도 자료들을 정리하여 보관하는 여러가지 구조들이 있는데 이를 말한다. "컴퓨터 프로그램 = 자료구조 + 알고리즘 " 이다. 대부분의 프로그램에서 자료(data)를 처리하고 있고 이들 자료는 자료구조 (data-structure)를 사용하여 저장된다. 여기서 문제를 처리하는 절차가 필요한데, 이를 알고리즘(algorithm)이라고 부른다. 최고 성적을 구하는 프로그램을 C언어를 이용하여 작성해보자. #include #define MAX_ELEMENTS 100 int scores[MAX_ELEMENTS]; //자료구조 : program에서의 자료처리. 자료는 자료구조를 사용하..