본문 바로가기

분류 전체보기

(101)
#14 덱(Deque)의 이해와 구현 Dequedouble-ended queue를 줄여서 표현한 것.앞으로도 뒤로도 데이터를 넣을 수 있고, 앞으로도 뒤로도 데이터를 뺄수 있는 자료구조를 말한다. ADT* void DequeInit(Deque * pdeq);- 덱의 초기화를 진행한다.- 덱 생성 후 제일 먼저 호출되어야 하는 함수이다.* int DQIsEmpty(Deque * pdeq);- 덱이 빈 경우 TRUE(1)를, 그렇지 않은 경우 FALSE(0)을 반환한다.* void DQAddFirst(Deque * pdeq, Data data);- 덱의 머리에 데이터를 저장한다. data로 전달된 값을 저장한다.* void DQAddLast(Deque * pdeq, Data data);- 덱의 꼬리에 데이터를 저장한다. data로 전달된 값을 ..
#13 큐(Queue)를 응용한 예제(햄버거가게) ADT* 점심시간은 1시간이고 그 동안 고객은 15초에 1명씩 주문을 하는 것으로 간주한다.* 한 명의 고객은 하나의 버거만을 주문한다고 가정한다.* 주문하는 메뉴에는 가중치를 두지 않는다. 모든 고객은 무작위로 메뉴를 선택한다.* 햄버거를 만드는 사람은 1명이다. 그리고 동시에 둘 이상의 버거가 만들어지지 않는다.* 주문한 메뉴를 받을 다음 고객은 대기실에서 나와서 대기한다.* 고객이 주문하는 메뉴에 가중치를 두기 않기 위해서 다음 함수르 사용하기로 하겠다.  int rant(void)  //무직위 메뉴의 선택을 위해서 Main.c#include #include #include #include "CircularQueue.h"#define CUS_COME_TERM 15 // 고객의 주문 가격: 초 단위#..
#12 큐(Queue) 큐 자료구조의 ADT* void QueueInit(Queue * pq);- 큐의 초기화를 진행한다.- 큐 생성 후 제일 먼저 호출되어야 하는 함수이다.* int QIsEmpty(Queue * pq);- 큐가 빈 경우 TRUE(1)을, 그렇지 않은 경우 FALSE(0)을 반환한다.* void Enqueue(Queue * pq, Data data);- 큐에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장한다.* Data Dequeue(Queue * pq);- 저장순서가 가장 앞선 데이터를 삭제한다.- 삭제된 데이터는 반환한다.- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야 한다.* Data QPeek(Queue * pq);- 저장순서가 가장 앞선 데이터를 반환하되 삭제하지 않는..
[Java] Map을 JSONObject로 변환 JSONObject json = new JSONObject(); String key = ""; Object value = null; // 방법1 for(Map obj : list){     Set keys = obj.keySet();     Iterator itKey = keys.iterator();     while(itKey.hasNext()){         String key = itKey.next();         Object value = obj.get(key);         json.put(key, value);     } } // 방법2 for(Map obj : list){     for(Map.Entry entry : obj.entrySet()){         key = entry...
#11 스택으로 계산기 만들기 전위연산으로 계산기 만들기중위연산을 전위연산으로 변경하기main.c#include #include "InfixToPostfit.h"int main(void){ char exp1[] = "1+2*3"; char exp2[] = "(1+2)*3"; char exp3[] = "((1-2)+3)*(5-2)"; ConvToRPNExp(exp1); ConvToRPNExp(exp2); ConvToRPNExp(exp3); printf("%s \n", exp1); printf("%s \n", exp2); printf("%s \n", exp3); return 0;}ListBaseStack.h#ifndef __LB_STACK_H__#define __LB_STACK_H__#define TRUE 1#define FALSE 0t..
#10 스택(Stack) 스택의 ADT* void StackInit(Stack* pstack); - 스택의 초기화를 진행한다. - 스택 생성 후 제일 먼저 호출되어야 하는 함수이다. * int SIsEmpty(Stack* pstack); - 스택이 빈 경우 TRUE(1)을, 그렇지 않은 경우 FALSE(0)를 반환한다. * void SPush(Stack* pstack, Data data); - 스택에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장한다. * Data SPop(Stack* pstack); - 마지막에 저장된 요소를 삭제한다. - 삭제된 데이터는 반환이 된다. - 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야 한다. * Data SPeek(Stack* pstack); - 마지막에 저장된 ..
#09 자료구조 양방향연결리스트 양방향 연결리스트Main.h#include #include "DBLinkedList.h"int main(void){ // 양방향 연결 리스트의 생성 및 초기화 List list; int data; ListInit(&list); // 8개의 데이터 저장 LInsert(&list, 1); LInsert(&list, 2); LInsert(&list, 3); LInsert(&list, 4); LInsert(&list, 5); LInsert(&list, 6); LInsert(&list, 7); LInsert(&list, 8); // 저장된 데이터의 조회 if (LFirst(&list, &data)) { printf("%d ", data); // 오른쪽 노드로 이동하며 데이터 조회 while (LNext(&l..
#08 자료구조 원형연결리스트(Circular Linked List) 원형 연결 리스트 (Circular Linked List) Main.h#include #include "CLinkedList.h"int main(void){ // 원형 연결 리스트의 생성 및 초기화 List list; int data, i, nodeNum; ListInit(&list); // 리스트에 5개의 데이터를 저장 LInsert(&list, 3); LInsert(&list, 4); LInsert(&list, 5); LInsertFront(&list, 2); LInsertFront(&list, 1); // 리스트에 저장된 데이터를 연속 3회 출력 if (LFirst(&list, &data)) { printf("%d ", data); for (i = 0; i  CLinkedList.h#ifndef..