본문 바로가기

자료구조10

[C++/자료구조] 연결 리스트(Linked List) & 양방향 연결 리스트(Double Linked List) Linked List : 연결 리스트 - 특징 1) 노드와 포인터로 이루어진 선형 자료구조 2) 노드는 데이터와 다음 노드를 가리키는 포인터로 구성된다 3) 크기가 가변적이므로 동적 메모리 할당과 함께 사용되기도 한다 - 장점 1) 삽입, 삭제가 용이하며, 데이터의 크기가 가변적일 경우 유용하다 2) 데이터를 읽는 것보다 데이터를 추가, 삭제하는게 빠르다 - 단점 1) 데이터를 찾는 데 걸리는 시간이 선형적으로 증가하기 때문에 탐색 속도가 느리다 2) 중간에 있는 노드를 삭제하면 메모리 낭비가 발생할 수 있다 Linked List.h #pragma once void DoLinkedList(); void PrintList(); class LLN // Linked List Node { public: stat.. 2023. 7. 8.
[자료구조] SIMD (Single Instruction Multiple Data) SIMD란 ? 하나의 명령어로 여러개의 데이터를 한번에 처리하는 병렬 방식의 기법을 의미 합니다. 즉 CPU에서 지원되는 명령어 셋으로 하나의 명령어로 동일한 형태나 구조의 여러 데이터를 한번에 처리 할 수 있는 기법입니다. 일반적인 프로그램은 SISD(Single Instruction Single Date)의 방식으로 구현되어있습니다. 대표적으로 DirecX, OpenGl 은 SIMD를 지원하고 있습니다. SIMD는 SISD보다 동영상, 그래픽 렌더링 등의 작업이 성능이 뛰어납니다. SISD & SIMD 4개의 32비트 정수 A0 ~ A3 그리고 B0 ~ B3 를 각각 덧셈을 하기 위해서는 총 4번의 연산과정이 필요합니다. 하지만 SIMD 연산에서는 4개의 다른 연산이아닌 한번의 연산으로 가능 합니다... 2023. 6. 19.
[자료구조] 함수포인터 함수 포인터 함수도 다른 변수들처럼 자신의 [주소]를 가지고 있습니다. 이 함수의 주소를 포인터 변수에 저장하여 사용할 수 있는 것을 함수 포인터 라고 합니다. [ 함수 포인터 예제 ] int (*f)(int, int); = 리턴타입(*포인터이름)(매개변수1, 매개변수2 / 단,매개변수없을시 () 또는 void); 위의 형태로 선언 할 수 있습니다. 위처럼 선언하였을때 함수의 주소값을 저장할 수 있는 [ f ] 의 이름을 가진 함수포인터가 만들어집니다. [ f ] 라는 이름의 포인터 안에는 함수의 [주소]를 저장 하여 사용 합니다. [ 함수 포인터 사용 예제 ] #include using namespace std; int add(int a, int b) { return ( a + b ); } int ma.. 2023. 5. 24.
[백준/C++] 10845 큐 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 이번 문제는 자료구조인 queue 에 대한 문제 입니다. 큐의 연산을 그대로 사용하는 문제 이며 string 자료형으로 명령어를 입력 받도록 합니다. 우선 queue를 사용하기위하여 #include 를 헤더에 추가합니다. 큐가 가지고 있는 연산자를 사용해야 합니다. 큐의 연산 pop() : 큐에서 제일 앞의 원소를 제거 합니다. front() : 큐의 제일 앞쪽 원소를 반환 합니다. push() : 큐의 제일 끝쪽에 원소를 추가 합니다. empty.. 2023. 5. 3.