자료구조 8

[자료구조 기초] 원형 연결리스트, Queue, 이중원형 연결리스트

앞에 큐장에서 표류 현상으로 인해 원형 리스트를 쓰는 것을 해결책으로 하는 방법을 잠깐 소개했었다 앞 글이 궁금하신 분들은 아래 링크를 클릭 [자료구조] - [자료구조 기초] queue , 큐 [자료구조 기초] queue , 큐 Queue queue는 기다리는 줄을 자료구조로 표현 한쪽 끝 (Rear)에서는 element의 삽입만, 또 다른 끝 (front)에서는 원소의 삭제만 하도록 제한되어 있는 유한 순서 리스트이다 먼저 들어간 애가 먼저 삭제 buildgoodhabit.tistory.com 이에 이어서 이번 포스팅에서는 원형 연결 리스트, 이중원형연결리스트에 대해 더 자세히 알아보도록 하자 원형연결리스트 리스트의 마지막 노드의 링크가 첫 번째 노드를 가리키도록 연결함 리스트 포인터가 마지막 노드를 ..

자료구조 2021.04.16

[자료구조 기초] queue , 큐

Queue queue는 기다리는 줄을 자료구조로 표현 한쪽 끝 (Rear)에서는 element의 삽입만, 또 다른 끝 (front)에서는 원소의 삭제만 하도록 제한되어 있는 유한 순서 리스트이다 먼저 들어간 애가 먼저 삭제되는 FIFO 리스트이다. ( First In First Out) , 스택과 반대되는 개념이다. Queue의 추상 자료형 0개 이상의 원소를 가진 유한 순서 리스트 선형 리스트나 연결 리스트를 사용한다. 리스트의 처음과 끝을 나타내는 Front와 Rear가 필요하다 Queue의 연산 operation desc init 큐를 초기화 insert 큐에 새로운 데이터를 하나 삽입 delete 큐의 Front 에 있는 데이터를 없애고 그 값을 반환 getFront 큐의 Front 에 있는 데이..

자료구조 2021.04.14

[자료구조 기초] Stack, 스택

이번에는 자료구조 중에서 스택에 대해 알아보자 한다. 스택은 쌓아 올린 더미를 표현한 것이며 데이터의 삽입과 삭제가 위 쪽 즉, 한쪽면에서만 이루어진다. stack을 사용하는 이유 출처 : 나무 위키 비전공자가 가장 와 닿는 영역은 undo. 그러니까 Ctrl + Z 그것. 가장 최근에 실행한 명령어를 취소해야 하기 때문에 마지막에 들어간 자료가 먼저 나오는 스택 구조가 효율적이다. 대부분의 현대 CPU는 어셈블리어에 스택 영역을 제어하는 명령이 있다. 한 프로그램이 사용하는 스택 영역은 기본적으로 크기가 고정되어 있다. 실행되거나 기다리고 있는 여러 함수 등 각 분기점에서, 함수에서 사용되는 변수와 같은 정보를 이러한 명령어를 통해 추가하고 삭제한다. 이를 이해하지 못하고 스택 영역 변수나 메모리를 함..

자료구조 2021.04.14

[자료구조 기초] 리스트, 선형 리스트, 단순 연결리스트, Linear List, Linked List

위의 그림은 자료구조의 범주이다. 메인 글을 보고 싶다면 아래 링크를 참고하길 바란다 [자료구조] - [자료구조 기초] 자료구조의 개념, 추상 자료형, 알고리즘 성능 분석 [자료구조 기초] 자료구조의 개념, 추상자료형, 알고리즘 성능 분석 데브옵스 엔지니어로 일을 하고 있지만 그래도 계속적으로 알고리즘이나 자료구조에 대한 부분은 항상 부족했다. 그래서 운영체제, 자료구조 등 정말 fundamental 한 공부부터 다시 시작해 보려고 buildgoodhabit.tistory.com 리스트 의미적으로 관련이 있는 데이터의 집합, 목록 배열이나 연결리스트를 사용해서 구현 선형 리스트 Linear List 데이터가 연속되는 메모리에 저장 / 배열이나 문자열을 말함 장점 index를 통해 해당 위치에 직접 접근할..

자료구조 2021.04.13

[자료구조 기초] structure, 구조체

이번 포스팅은 구조체에 대해 알아보고자 한다. 배열과 다른 구조체의 가장 큰 특징은 배열은 같은 데이터 타입만 저장할 수 있지만 구조체는 서로 다른 데이터 타입을 갖는 여러 요소들을 하나의 묶음으로 표현이 가능하다는 것이다. 각 요소가 각각의 타입과 변수 이름을 갖는다 구조체 선언방법 1) 구조체 정의와 변수로 선언 struct Person{ char name[10]; int age; float salary; }; struct Person person1; 2) 정의와 동시에 선언 struct Person{ char name[10]; int age; float salary; }person1; 3) 구조체 이름 생략 struct{ char name[10]; int age; float salary; }pers..

자료구조 2021.04.13

[ 자료구초 기초] Array, 배열

배열에 대해 알아보도록 하자 배열 인덱스와 포인터 동일한 데이터 타입의 변수 여러 개를 하나로 묶어서 관리하기 위한 자료구조이다. 메모리 상에 연속된 공간에 위치함 각각의 원소를 element 라 하며, index를 사용해서 원하는 요소로 바로 이동 c언어에서 배열은 포인터 타입으로 선언됨 #include void main(){ int a[5]; a[0]=2001; a[1]=2002; a[2]=2003; a[3]=2004; } 이를 그림으로 표현하면 다음과 같다 important!! a는 변수가 포인터 변수다. #include void main(){ short a[5] = {10,20,30,40,50}; printf("a[0] :%d\n\n",a[0]); printf("a[1]:%d\n\n",a[1]);..

자료구조 2021.04.13

[자료구조 기초] Pointer , 포인터

자료구조에서의 핵심 개념인 포인터에 대해 정리해 보자 포인터란? Variable : 프로그램에서 사용되는 값을 저장하기 위한 컴퓨터 메모리(RAM) 상의 일정 영역 Pointer : 어떤 Variable의 위치를 참조, Variable 의 address 주소 값을 저장 - 빠른 실행이 가능하다. #include void main() { int x = 2004; printf("%d\n", x); int *p; p = &x; printf("%p\n", p); // pointer의 값은 주소값이다 variable 값이 아님 printf("%p\n", &x); printf("%d\n", *p); // pointer 가 가르키는 variable 값을 출력 } 이 코드를 도식화하면 아래와 같다. p의 값은 x의 주..

자료구조 2021.04.13

[자료구조 기초] 자료구조의 개념, 추상자료형, 알고리즘 성능 분석

데브옵스 엔지니어로 일을 하고 있지만 그래도 계속적으로 알고리즘이나 자료구조에 대한 부분은 항상 부족했다. 그래서 운영체제, 자료구조 등 정말 fundamental 한 공부부터 다시 시작해 보려고 한다. 자료구조를 먼저 시작을 해보자 이번 포스팅은 자료구조의 개념, 추상자료형, 알고리즘의 성능 분석 순으로 글을 전개해보고자 한다. 자료구조의 개념 Program Definition A computer program is a collection of instructions that performs a specific task when executed by a computer. 즉, 컴퓨터에서 특정 작업을 수행하는 명령어들의 집합을 프로그램이라 한다. Software A collection of data or..

자료구조 2021.04.13