목록컴퓨터공학/자료구조 (9)
cyphen156

스택 다음으로 구현할 자료구조는 Queue다.사실 STL 문서를 뒤적이다가 알게 된 것인데, Stack과 Queue는 사실 뒤에 나올 Deque를 통해 구현된 어댑터 패턴이 적용된 클래스이다. 기본 구현은 이미 Deque를 통해 구현되어 있지만, 메서드 hiding을 통해 필요한 부분만 사용자에게 노출시키는 전략을 사용한다.하지만 우리는 다시 구현하는 입장이기 때문에 우선 Stack과 Queue를 구현한 뒤, Deque를 구현하고 나서 어댑터를 통해 Stack과 Queue 클래스를 수정하도록 하겠다.Queue큐는 선입선출의 기능을 갖고 있는 자료구조이다.📌 구현 목표본 글에서는 Queue(큐) 자료구조를 직접 구현템플릿 기반으로 자료형에 독립적인 구조를 구성내부적으로는 동적 배열을 사용하여 크기 확장(..

배열은 기본 자료형이니 구현하지 않고 넘어간다.리스트는 배열로 대체할 수 있으니 구현하지 않는다.그렇다면 남은것은 Stack, Queue - Deque / Priority Queue다.이 글에서 구현할 것은 Stack이다. 가변길이 할당과 템플릿 기반으로 구현하도록 하겠다.📌 구현 목표본 글에서는 Stack(스택) 자료구조를 직접 구현템플릿 기반으로 자료형에 독립적인 구조를 구성내부적으로는 동적 배열을 사용하여 크기 확장(reallocation)을 지원스택에 필요한 주요 기능인 Push, Pop, Top, Empty, Size, Clear를 제공복사 생성자와 대입 연산자를 통한 얕은 복사 방지(Deep Copy)도 고려🧱 프로젝트 구조Stack은 Linear_Data_Structures 네임스페이스에..

갑자기 왜 이짓거리 다시하고 있냐 싶을 순 있는데 내가 배웟던 것들좀 다시 정리할려고 한다. 이전에 만들어놓은거 보니까 성능이고 나발이고 전부다 연결 리스트로 구현해놨더라고?참고하는 자료는 다음과 같다.자바로 배우는 쉬운 자료구조 자바로 배우는 쉬운 자료구조 | 이지영 - 교보문고자바로 배우는 쉬운 자료구조 | 『자바로 배우는 쉬운 자료구조』은 알고리즘에 대해 C와 자바 프로그래밍으로 구체화 시키는 방법을 다룬다. 자료구조와 알고리즘을 어렵고 추상적인 이론으로product.kyobobook.co.kr널널한 개발자 - 자료구조자료구조(DataStructure)란?우리가 다루는 데이터는 항상 같은 형태로 존재하지 않는다. 어떤 건 단순히 숫자 몇 개를 나열하는 것만으로 충분하고, 어떤 건 다양한 속성들이..

큐는 스택과 더불어 가장 많이 쓰이는 자료 입출력 구조이다. 스택(Stack)이 후입선출(LIFO)방식이었다면, 큐(Queue)는 선입선출(FIFO)의 구조로 입장순서에 대한 개념과 같다. 운영체제 입장에서도 중요한데 특별한 이유(Exception/우선 처리 지시 등의 예외사항)가 아니라면 무조건 먼저 들어온 프로세스를 먼저 처리하는 과정으로 동작하기 때문에 중요하다. 기본적으로 사용하는 형식은 스택을 구현했을 때와 유사하게 사용하지만, 다른점은 스택을 사용했을 때와 달리 큐를 구현할때는 마지막 노드(tail==stack의 top)와 마찬가지로 첫번째 노드 (Head)에 대한 정보가 중요하다는 것이다. Queue.c /** * 큐 자료구조 구현하기 * // 단일연결리스트 * using struct * *..

구조체, 리스트를 사용한 자료구조 만들어보기 첫번째 스택 다 만드는데 대충 2시간쯤 걸렷나? 싶다 간만에 하니까 기억이 가물가물하네 기본적으로 스택은 리스트의 한 유형에 해당한다. LIFO(Last In Frist Out/후입 선출)이라는 구조를 가지고 있는데, 가장 마지막에 입력된 자료가 맨 처음 수행되는 하노이의 탑쌓기라고 생각하면 된다. 스택이 중요한건 컴퓨터가 메모리 상에서도 스택이라는 구조를 사용하기도 하지만, 운영체제 입장에서도 다른것은 신경쓸 필요 없이 최상위 데이터만 신경쓰면 되기에 처리 속도면에서 효율적인 자료구조라고 볼 수 있다. 스택이 비었을 경우의 동작 스택에 자료를 입력한 이후의 동작 /** * 스택자료구조 구현하기 * //리스트 * using struct * */ #define ..

오늘날의 현대 컴퓨팅 환경에서는 대부분 2의 보수를 통해 수치 자료를 표현한다. 2의 보수 2의 보수란 2진수 체계에서 음수와 양수, 그리고 0이라는 수를 표현하기 위해 사용되는 수 체계로, 8비트를 기준으로 최상위 비트(MSB)를 부호비트로 사용하고, 남는 7개의 비트를 통해 수를 표현하는 방법이다. 숫자 0인 경우 00000000(0),양수의 경우 00000001(1)~01111111(127), 11111111(-1)~10000000(-128)로 표현된다. 특이한 점은 양수의 표현 범위가 2의 7제곱이 아니라 2의 7제곱 -1이라는 사실인데 이것은 0의 존재를 표현하기 위해서이다. 2의 보수체계에서 양수를 음수로 만드는 과정은 간단하다. 2진수 양수의 모든 비트를 반전(0->1, 1->0)시킨뒤, 1..

컴퓨터가 10진수를 표현하는 방법은 여러가지 방법이 있지만 오늘 소개할 방법은 존(Zone)과 팩(Pack)이라는 형식이다. 이 두 방법은 IBM에서 BCD/EBCDIC(Binary Coded Decimal / Extended Binary Coded Decimal Interchange Code)라는 문자 코딩방식에서 나온 특수한 형식으로, 주로 정밀한 수의 계산이 필요한 금융권에서 사용하는 일반적인 프로그래밍 언어에서 사용하는 방법은 아니다. 두 형식 모드 수를 표현할 때 1바이트 단위로 사용한다는 것은 동일하지만 약간의 차이점이 존재한다. 존(Zone) 형식 표현법 존 형식은 상위 4비트는 1111(F) 또는 1110(D, 양)/1100(C, 음수)로 채워 부호비트인지 여부를 알려주고, 하위 4비트에 ..

소프트웨어 생명주기 요구분석 -> 시스템 명세 -> 설계 -> 구현 -> 테스트 -> 유지보수 요구분석 문제를 분석하고 개발할 소프트 웨어의 기능과 제약조건, 목표 등을 사용자와 함께 명확히 정의하는 단계 시스템 명세 시스템이 수행하는 내용을 정의하는 단계 설계 시스템 명세 단계에서 정의한 기능을 실제 수행하기 위한 방법을 논리적으로 결정하는 단계 시스템 구조 설계 : 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조를 설계 프로그램 설계 : 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘을 설계 사용자 인터페이스 설계 : 사용자가 시스템을 이용하기 위해 보여지는 부분을 설계 하향식 설계 : 큰 틀을 설계한 뒤 세부적으로 쪼개어 나가면서 점차 구체적으로 설계하는 분할 정복 방식의 설계 상향식 ..