본문 바로가기

전체 글846

큐(Queue)의 연결리스트 기반 구현 배열을 기반으로 큐를 구현하는 경우 몇가지 고려할 사항이 있었다. 그래서 원형 큐를 소개했고, 또 큐가 꽉 찬 경우와 텅 빈 경우를 구분하는 방법도 소개하였다. 하지만 연결리스트를 기반으로 구현하는 경우에는 의외로 신경 쓸 부분이 적다. 연결 리스트 기반 큐의 헤더파일 정의 "스택과 큐의 유일한 차이점은 앞에서 꺼내느냐 뒤에서 꺼내느냐에 있으니 ,이전에 구현해 놓은 스택을 대상으로 꺼내는 방법만 조금 변경하면 큐가 될꺼같다" 위의 판단은 배열 기반에서는 옳지 않았지만, 연결리스트 기반의 큐라면, 위의 판단은 어느 정도 옳다. 연결리스트를 기반으로 구현하면 앞서 논의한 고민거리들이 사라지기 때문이다. 하지만 다음과 같은 차이점이 있기 때문에 여전히 스택의 구현과는 차이가 있다고 말할 수 있다. "스택은 p.. 2021. 2. 28.
큐(Queue) 큐는 앞서 설명한 스택과 함께 언급되고 또 비교되는 자료구조이다. 스택은 먼저 들어간 데이터가 나중에 나오는 구조인 반면, 큐는 먼저 들어간 데이터가 먼저 나오는 구조이다. 이것이 스택과 큐의 유일한 차이점이다. 큐(Queue)에 대한 이해 큐의 이해를 위해서 별도의 예는 필요하지 않다. 큐는 우리에게 매우 익숙한 자료구조 이기 때문이다. 예를들어 대중교통이나 패스트푸드점에서 주문을 할 때 줄을 섰던걸 생각해보면 된다. 즉 줄을 섰던게 큐의 구성이랑 같기 때문이다. 이렇듯 큐는 선입선출 구조의 자료구조이다. 때문에 'FIFO(First-in, First-out) 구조의 자료구조'라고 불린다. 큐의 ADT정의 스택과 마찬가지로 큐의 ADT도 정형화된 편이다. 그럼 큐의 핵심이라 할 수 있는 두가지 연산을 .. 2021. 2. 27.
변수 변수(Variable)는 프로그램의 처리 과정에서 데이터를 담아둘 수 있는 메모리 공간을 의미한다. 하나의 변수에는 하나의 값만 저장할 수 있고, 이 값을 변경할 수 있기 때문에 변할수 있는 값, 즉 변수(Variable)이라 부른다. 변수의 선언 및 초기화 변수를 사용하려면 먼저 선언을 해야한다. 변수의 선언방식은 다음과 같다. int a; int a = 1; int : 데이터 타입 : 변수에 기억시킬 데이터의 형태를 의미 a : 변수명 : 기억장소 주소를 대신하여 사용할 이름 1 : 초기 값 : 변수를 선언한 후 기억시킬 값 변수의 이름을 명명할 때는 몇가지의 규칙이 있다. 1. 변수의 이름은 숫자로 시작할 수 없고, 특수문자는 $와 _ 만 사용이 가능하다. 2. 대소문자를 구분하기 때문에, 대소문자.. 2021. 2. 26.
C언어 함수들2 unsigned long strtoul long strtol과 동일하지만 부호가 존재하지 않는다. double strtod(const char * string, char **stop); string은 지수가 포함된 문자열 stop은 변환이 되다가 멈춰진 위치 지수(e, E)를 사용 문자열을 실수 (지수)로 변환 char * itoa(int value, char *string, int radix); value는 변환될 숫자 값, string은 변환될 숫자가 저장될 버퍼 radix는 value값을 몇 진수로 저장할껀지? 정수를 문자열로 변환한다. char *ltoa( ); itoa와 동일하지만 반환 값은 long형임 char *fcvt(double value, int count, int *dec, int *.. 2021. 2. 25.
스택을 활용한 계산기 구현 계산기 프로그램 구현 우리가 만들 계산기는 다음 두가지를 고려해서 연산이 가능해야 한다. 1. 소괄호를 파악하여 그 부분을 먼저 연산한다. 2. 연산자의 우선순위를 근거로 연산의 순위를 결정한다. 계산기의 구현에 필요한 알고리즘을 소개한다. 수식표기법 : 중위(infix), 전위(prefix), 후위(postfix) 표기법 계산기의 구현에 필요한 부가적인 것을 설명하기에 앞서 우리가 구현할 계산기에 대해 다음과 같이 기능을 제한한다. "수식을 이루는 피연산자는 한자리 숫자로만 이뤄진다고 가정" 즉 1과 3은 피연산자가 될 수 있지만, 24와 35는 피연산자가 될 수없다. 중위 표기법(infix notation) 5 + 2 / 7 전위 표기법(prefix notation) +5 / 2 7 후위 표기법(po.. 2021. 2. 24.
스택 이번에 소개하는 스택은 리스트와 마찬가지로 대표적인 선형 자료구조 이다. 스택을 도구를 이용해 설명을 하자면 '쌓아진 상자 더미'나 '쟁반 위에 쌓인 접시'로 비유할 수 있다. 즉 스택은 다음과 특성을 지닌다. "먼저 들어간 것이 나중에 나온다" 이렇듯 스택은 나중에 들어간 것이 먼저 나오는 구조이므로 '후입선출' 방식의 자료구조로 불리고, 영어로 'LIFO(Last-In, First-Out)구조의 자료구조'라고도 불린다. 스택의 ADT를 정의해 보자. 앞서 살펴본 리스트 자료구조의 ADT는 필요에 따라서 그 정의 내용에 약간 씩 차이가 있다. 그에 비해 스택의 ADT는 상대적으로 정형화된편이다. 스택을 대표하는 넣고, 꺼내고, 들여다 보는 연산을 가리켜, push, pop, peek라 한다. 떄문에 스.. 2021. 2. 23.