Skip to content
Home » 선형 자료 구조 | [10분 테코톡] 🐻 중간곰의 선형 자료구조 모든 답변

선형 자료 구조 | [10분 테코톡] 🐻 중간곰의 선형 자료구조 모든 답변

당신은 주제를 찾고 있습니까 “선형 자료 구조 – [10분 테코톡] 🐻 중간곰의 선형 자료구조“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 우아한Tech 이(가) 작성한 기사에는 조회수 997회 및 좋아요 19개 개의 좋아요가 있습니다.

Table of Contents

선형 자료 구조 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [10분 테코톡] 🐻 중간곰의 선형 자료구조 – 선형 자료 구조 주제에 대한 세부정보를 참조하세요

🙋‍♀️ 우아한테크코스의 크루들이 진행하는 10분 테크토크입니다. 🙋‍♂️
’10분 테코톡’이란 우아한테크코스 과정을 진행하며 크루(수강생)들이 동료들과 학습한 내용을 공유하고 이야기하는 시간입니다. 서로가 성장하기 위해 지식을 나누고 대화하며 생각해보는 시간으로 자기 주도적인 성장을 지향하는 우아한테크코스의 문화 중 하나입니다.
🌕우아한테크코스란 🌕
우아한테크코스는 일반 사용자용 서비스를 개발하는 회사가 필요로 하는 역량을 가진 프로그래머를 양성하기 위한 교육입니다. 우리의 목표는 자기 주도적으로 학습하고 성장하고 싶은 개발자를 위한 교육을 만드는 것입니다.
*우아한테크코스 3기는 “온라인”으로 강의 및 발표를 진행하고 있습니다. 온라인 발표 화면인 점 참고 부탁드립니다 : )

선형 자료 구조 주제에 대한 자세한 내용은 여기를 참조하세요.

선형(Linear) / 비선형(NonLinear) 자료구조 – goodGid

선형 자료구조 (Linear) · 선형 자료구조란 하나의 자료 뒤에 하나의 자료가 존재하는 것이다. · 자료들 간의 앞뒤 관계가 1:1의 선형관계 · 배열과 리스트가 …

+ 여기에 표시

Source: goodgid.github.io

Date Published: 8/25/2021

View: 7377

[자료구조] 자료구조란?(선형구조, 비선형구조) – 어제도그랬어

선형구조란 자료를 구성하는 데이터를 순차적으로 나열시킨 형태를 의미합니다. 비선형구조란 하나의 자료 뒤(안)에 여러개의 자료 …

+ 여기에 자세히 보기

Source: osy0907.tistory.com

Date Published: 7/1/2021

View: 8388

[자료구조] 자료구조의 선형, 비선형 분류에 따른 각 종류와 자료 …

선형구조란? 자료를 구성하는 원소들은 순차적으로 나열시킨 형태를 의미한다. 어떤 연산들을 수행할 수 있느냐에 따라 세부적으로 나뉠 수 있다.

+ 여기에 표시

Source: dnf-lover.tistory.com

Date Published: 2/15/2021

View: 2779

선형구조와 비선형구조 – 임대리 개발일지

자료구조는 크게 3가지 선형 구조, 비선형 구조, 파일 구조로 분류할 수 있는데 이번 글 … 선형구조 – 배열(선형 리스트), 연결 리스트, 스택, 큐..

+ 여기에 표시

Source: server-engineer.tistory.com

Date Published: 5/27/2022

View: 2357

[자료구조] 자료구조란?(선형구조, 비선형구조)

선형구조란 자료를 구성하는 데이터를 순차적으로 나열시킨 형태를 의미합니다. 비선형구조란 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것을 …

+ 여기에 자세히 보기

Source: allg.tistory.com

Date Published: 12/17/2022

View: 6127

[3] [알고리즘 – 자료구조] 선형구조란? – DeveloperJun – 티스토리

선형구조. 데이터가 연속적으로 연결되어 있는 모양인 자료구조입니다. 네이버 지식백과. 선형 구조(linear structure)의 linear는.

+ 여기에 자세히 보기

Source: developerjun2.tistory.com

Date Published: 1/24/2021

View: 9601

[JAVA ] 자료구조- 단순구조 선형구조 비선형구조 해싱

선형 구조 : 자료를 구성하는 데이터를 순차적으로 나열시킨 형태 · 1) 배열 (Arrays) : 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 …

+ 여기에 보기

Source: uni.rejoice-it.com

Date Published: 10/23/2022

View: 7952

자료구조 06. 선형구조, 비선형구조 – 쌀 팔다 개발자 – 티스토리

단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입; 선형구조 : 저장되는 자료의 전후관계가 1:1 (리스트, 스택, 큐 등); 비선형구조 : 데이터 …

+ 여기에 자세히 보기

Source: daeguowl.tistory.com

Date Published: 11/15/2022

View: 4271

[자료구조]선형 구조의 종류와 설명 – pat coding – 티스토리

[자료구조]선형 구조의 종류와 설명 · 1. 선형 리스트(Linear List) ex) 배열(Array). 연속적인 기억공간에 배정하며 각 요소들은 동일 데이터 타입으로 < ...

+ 여기를 클릭

Source: uuukpyo.tistory.com

Date Published: 4/17/2022

View: 506

[Data Structure] 선형(Linear) & 비선형(NonLinear) 자료구조

선형 구조란, 자료를 구성하는 원소들을 하나씩 순차적으로 나열시킨 형태입니다. 자료들간의 앞, 뒤 관계가 1:1의 관계로 배열과 리스트가 대표적이며 스택과 큐도 이에 …

+ 여기에 더 보기

Source: jud00.tistory.com

Date Published: 8/7/2022

View: 4112

주제와 관련된 이미지 선형 자료 구조

주제와 관련된 더 많은 사진을 참조하십시오 [10분 테코톡] 🐻 중간곰의 선형 자료구조. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[10분 테코톡] 🐻 중간곰의 선형 자료구조
[10분 테코톡] 🐻 중간곰의 선형 자료구조

주제에 대한 기사 평가 선형 자료 구조

  • Author: 우아한Tech
  • Views: 조회수 997회
  • Likes: 좋아요 19개
  • Date Published: 2021. 9. 12.
  • Video Url link: https://www.youtube.com/watch?v=xnURecIJk4g

[자료구조] 자료구조란?(선형구조, 비선형구조)

자료구조(資料構造, 영어: data structure)는 전산학에서 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다.

위키백과-자료구조

[자료구조] 자료구조의 선형, 비선형 분류에 따른 각 종류와 자료구조별 특징 간단 정리

프로그래밍을 하다보면 각 특징에 맞게 효율적으로 데이터를 담는 자료구조가 존재한다.

이 포스팅은 다양한 자료구조의 종류와 각 특징의 간단 정리를 하는 글이다.

– 자료구조의 분류

자료구조는 크게 두 분류로 나뉘어진다. 바로 선형구조와 비선형 구조이다.

■ 선형구조 : 선형 리스트(배열), 연결 리스트, 스택, 큐, 데크

■ 비선형구조 : 트리, 그래프

선형구조란? 자료를 구성하는 원소들은 순차적으로 나열시킨 형태를 의미한다. 어떤 연산들을 수행할 수 있느냐에 따라 세부적으로 나뉠 수 있다.

비선형구조란? 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 형태를 의미한다.

그림으로 보면 더 이해하기가 쉬울 것이다.

선형구조는 아래와 같이 1부터 4까지 순차적으로 원소를 나열시키는 형태이며,

비선형구조는 아래와 같이 하나의 자료인 Root가 있고 그 아래에 여러개의 원소를 나열시킨 형태이다.

– 배열

배열은 인덱스를 가지고 있으며, 순차적으로 데이터가 삽입 삭제될 수 있는 형태의 자료구조이다.

또한 데이터를 순차적으로 삽입 삭제할때 가장 효과적이다.

장점 단점 인덱스를 사용하기 때문에 검색이 빠르다. 중간에 삽입 삭제가 어렵다.

– 연결 리스트

연결리스트는 자료들을 임의의 기억공간에 기억시키되 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료구조이다.

연결을 위한 포인터 부분이 필요하기 때문에 순차 리스트, 배열에 비해 기억공간 이용 효율이 좋지는 않다.

또한 연결 리스트 중 중간 노드의 연결이 끊어지면 그 다음 노드를 찾기 힘들지만, 노드의 연결이 끊어지지만 않는다면 중간에 삽입 삭제가 용이하다.

장점 단점 중간 삽입 삭제가 빠르고 용이하다. 검색 속도, 접근 속도가 느리다.

– 스택(Stack)

스택은 리스트의 한 쪽 끝으로만 자료를 삽입, 삭제 작업이 이루어 진다.

스택의 특징은 가장 마지막으로 들어온 데이터부터 빠져나가는 후입선출(LIFO) 형식이며,

– 스택의 가장 마지막 삽입 위치를 가리키는 TOP/SP(StackPointer)

– 스택의 가장 밑 바닥을 나타내는 Bottom

– 스택의 자료 입력 명령어인 PUSH

– 스택의 자료 출력 명령어인 POP이 있다.

스택의 쓰임새를 알려면 프로그램이 운영체제로부터 할당받는 메모리공간을 알 필요가 있다.

– 코드(code) 영역 – 데이터(DATA) 영역 – 스택(Stack) 영역 – 힙(Heap) 영역.

여기서 스택은 ‘스택 메모리’라 불리며 지역 변수와 매개변수를 담고 있으며 컴파일 타임에 크기가 결정된다.

스택의 용도는 대략 7가지 정도가 있다.

부 프로그램 호출 시 복귀주소를 저장할 때 함수 호출의 순서 제어 인터럽트가 발생하여 복귀주소를 저장할 때 후위 표기법으로 표현된 산술식을 연산할 때 0 주소지정방식 명령어의 자료 저장소 재귀 프로그램의 순서 제어 * 재귀 프로그램이란, 한 루틴이 자기를 다시 호출하여 실행하는 프로그램을 일컫는다. 컴파일러를 이용한 언어 변역 시

– 큐(Queue)

큐는 선형 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료구조이다.

가장 먼저 삽입된 자료가 가장 먼저 출력되는 선입선출(FIFO) 방식으로 처리한다.

– 가장 먼저 삽입된 자료의 기억공간을 가리키는 포인터로 삭제 작업이 이루어지는 Front 포인터

– 가장 마지막에 삽입된 자료가 위치한 기억장소를 가리키는 포인터로 삽입 작업이 이루어지는 Rear 포인터

Queue는 순서를 기다리는 대기 행렬 처리에 사용되거나 운영체제의 작업 스케쥴링에 사용된다.

– 데크(Deque, Double Ended Queue)

데크는 Stack과 Queue의 장점을 빼서 따로 구성된 자료구조로, 삽입 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료구조이다.

– 입력이 한쪽에서만 발생하고 출력은 양쪽에서 일어날 수 있는 입력 제한과, (입력 제한 데크 : Scroll)

– 입력은 양쪽에서 일어나고 출력은 한쪽에서만 이루어지는 출력 제한이 있다. (출력 제한 데크 : Shelf)

– 트리(Tree)

트리틑 정점(Node)과 선분(Branch)을 이용하여 사이클로 이루어 지지 않도록 구성된 그래프의 특수한 형태이다.

트리는 계층 모델로 노드가 N개인 트리는 항상 N-1개의 가지를 갖는다.

또한 루트에서 어떤 노드로 가는 경로는 유일하다. 트리의 순회는 Pre-Order, In-Order, Post-Order로 이루어진다.

– 노드(Node) : 트리의 기본 요소. 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것이다.

– 가지(Branch, Edge) : 노드와 노드를 연결하는 간선

– Root Node : 트리의 맨 위에 있는 노드이다. 위 예시에는 1 이다

– 차수, Degree : 각 노드에서 뻗어나온 가지의 수이다. 위 예시에는 1의 차수 = 2 / 2의 차수 = 2 / 4의 차수 = 1이다

– 트리의 차수 : 노드들의 차수 중에서 가장 많은 수를 의미한다. 위 예시에는 2이다.

– 단말 노드(Terminal Node = Leaf Node) : 자식이 하나도 없는 노드이다. 이 단말 노드의 차수는 0이다.

위 예시에는 5, 6, 7, 8이 단말노드이다.

– 비단말 노드(Non-Terminal Node) : 자식이 하나라도 있는 노드이다. 위 예시에는 1, 2, 3, 4가 비단말 노드이다.

– 자식노드(Children Node) : 어떤 노드에 연결된 다음 레벨의 노드들을 의미한다. 만약 위 예시에서 2의 자식 노드는 4와 5가 된다.

– 부모노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드이다. 위 예시에서 8의 부모 노드는 4가 된다.

– 형제노드(Sibling) : 동일한 부모를 갖는 노드들을 의미한다. 위 예시에서 7의 형제노드는 7이 된다.

– Level : 루트 노드의 레벨을 1로 가정한 후 어떤 레벨이 L이면 자식 노드는 L+1이다.

– 깊이(Depth, Height) : 어떤 트리에서 노드가 가질 수 있는 최대의 레벨을 의미한다. 위 예시에서 깊이는 4이다.

트리의 종류에는 일반 트리, 이진 트리, 완전 이진트리, 균형 이진트리, 포화 이진트리, 균형 트리 등으로 되어 있다.

이진 트리(Binary Tree) 각 노드가 최대 두 개의 자식을 갖는 트리이다. 모든 트리가 이진 트리는 아니다. 이진 트리의 순회는 중위 순회(left -> 현재 -> right), 전위 순회(현재 -> left -> right), 후위 순회(left -> right -> 현재)가 있다.

이진 탐색 트리는, 모든 노드가 모든 왼쪽 자식들 <= n <= 모든 오른쪽 자식들의 특정 순서를 따르는 이진 트리이다. 완전 이진트리(Complete BT) 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 트리이다. 균형 이진트리(Full Binary Tree) 모든 노드가 0개 또는 2개의 자식 노드를 갖는 트리이다. 포화 이진트리(Perfect Binary Tree) 균형 이진트리이면서 완전 이진트리로, 모든 단말노드는 같은 높이에 있어야 하며, 모든 내부 노드가 두 개의 자식노드를 갖는다. 균형 트리(B-Tree) 레드블랙트리, AVL트리가 이 일종이며, 시간 복잡도 O(logN)에 삽입, 찾기 등을 무리없이 가능한 균형 잡힌 트리이다. 트리의 쓰임새는 다양한데, 정렬에서 Heap정렬 등에 쓰이는 최소 힙(부모노드 <= 자식노드, 오른차순)과 최대 힙(부모노드 >= 자식노드, 내림차순)또한 완전 트리구조로 되어 있다.

– 그래프(Graph)

그래프는 단순히 노드(Node)와 그 노드를 연결하는 간선(Edge)을 하나로 모아놓은 자료구조이다. 즉, 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조이다.

우리가 평소에 보는 지하철 노선도가 그래프 형태로 되어 있다.

그래프는 노드와 다르게 루트 노드 개념과 부모-자식 관계의 개념이 없다. 2개 이상의 경로가 가능하며, 순회는 DFS와 BFS로 이루어진다.

간선의 유무는 그래프에 따라 다르며 간선에 따라 Weight 가중치를 매길 수 있다.

– 정점(Vertex, Node) : 데이터의 위치를 나타내는 개념이다.

– 간선(Edge, Branch) : 노드를 연결하는 선이다.

– 인접 정점(Adjacent Vertex) : 간선에 의해 직접 연결된 정점이다.

– 노드의 차수(Degree) : 무방향 그래프에서 하나의 정점에 인접한 정점의 수이다.

– 진입 차수(in-Degree) : 방향 그래프에서 외부에서 오는 간선의 수이다.

– 진출 차수(out-degree) : 방향 그래프에서 외부로 향하는 간선의 수이다.

– 경로의 길이 : 경로를 구성하는데 사용된 간선의 수이다.

– 단순 경로 : 경로 중에서 반복되는 정점이 없는 경우를 의미한다.

그래프의 종류는 크게 무방향 그래프와 방향 그래프, 가중치 그래프, 연결그래프와 비연결그래프, 순환 그래프와 비순환 그래프, 완전 그래프 등으로 구성되어 있다.

이를 구분하기 위해서는 오일러 경로(Eulerian Tour)의 개념을 알고 있어야 한다.

오일러 경로란, 그래프에 존재하는 모든 간선을 한 번만 통과하면서 처음 정점(Vertex)으로 되돌아오는 경로를 의미한다. 그래프의 모든 정점에 연결된 간선의 개수가 짝수일 때만 오일러 경로가 존재한다.

가중치 그래프(=Network) 간선에 비용이나 가중치가 할당된 그래프이다. 무방향 그래프 무방향 그래프의 간선은 간선을 통해서 양 방향으로 갈 수 있다.

정점 A와 정점 B를 연결하는 간선은 (A, B) 혹은 (B, A)와 같이 정점의 쌍으로 표현한다. 방향 그래프 간선에 방향성이 존재하는 그래프이다.

A->B로만 갈 수 있는 간선은 로 표시한다. 무방향 그래프와 다르게 로 나타낼 수 없다. 즉, 는 다른 의미다. 비연결 그래프 무방향 그래프에서 특정 정점쌍 사이에 경로가 존재하지 않는 그래프이다. 연결 그래프 무방향 그래프에 있는 모든 정점쌍에 대해서 항상 경로가 존재하는 경우이며 트리가 이에 해당된다. 비순환 그래프 사이클이 없는 그래프이다. 순환 그래프 단순 경로의 시작 정점과 종료 정점이 동일한 그래프이다. 완전 그래프 그래프에 속해 있는 모든 정점이 서로 연결 되어 있는 그래프이다.

(무방향 완전 그래프의 정점 수(n)일 때 간선의 수를 구하는 공식 = n * (n – 1) / 2)

선형구조와 비선형구조

728×90

반응형

자료구조는 크게 3가지 선형 구조, 비선형 구조, 파일 구조로 분류할 수 있는데

이번 글에서는 선형구조와 비선형구조의 자료구조 특징을 알아보자 ㄱㄱ

1. 선형구조

– 배열(선형 리스트), 연결 리스트, 스택, 큐, 데크

– 데이터가 연속적으로 연결되어 있는 모양으로 구성하는 방법

– 포인터 등을 사용하여 자료를 연결하면 그 결과가 자료에 일직선상에 표시되거나 하나의 원상에 표시되는 구조

a) 연결리스트

– 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료구조

– 노드의 삽입, 삭제 작업이 용이하다

– 기억공간이 연속적으로 놓여있지 않아도 저장이 가능하다

– 접근 속도가 느리다 (포인터를 찾아가는 시간이 필요하기 때문에 배열에 비해 접근속도 느림)

– 중간 노드의 연결이 끊어지면 그 다음 노드를 찾기 힘들다

b) 스택

– 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조

– LIFO / 인터럽트가 발생하여 복귀주소를 저장할 때 사용

c) 큐

– 한쪽에서는 삽입 작업이, 다른 쪽에서는 삭제 작업이 이루어지도록 구성

– 시작과 끝을 표시하는 두 개의 포인터가 있다

– 창구 업무처럼 서비스 순서를 기다리는 등의 대기 행렬 처리에 사용

d) 데크(DEQ : Double Ended Queue)

– 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료구조

– 스택과 큐의 장점만 따서 구성한 것

– 입력이 한쪽하서만 발생하고 출력은 양쪽에서 일어날 수 있는 입력제한,

입력은 양쪽에서 일어나고 출력이 한쪽에어만 이루어지는 출력제한이 있다

2. 비선형구조

a) 트리

– 정점(node)와 선분(brabch)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 형태

– 방향성이 있다 (부모와 자식 계층 구조가 명확)

b) 그래프

– 정점(node)와 선분(brabch)을 이용하여 사이클을 이루도록 구성

– 순환이 된다

[자료구조] 자료구조란?(선형구조, 비선형구조)

자료구조(資料構造, 영어: data structure)는 전산학에서 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다.

위키백과-자료구조

자료구조] 선형구조란?

728×90

선형구조

데이터가 연속적으로 연결되어 있는 모양인 자료구조입니다.

네이버 지식백과

선형 구조(linear structure)의 linear는

‘선으로 된’, ‘직선 모양의’라는 뜻입니다.

한 칸에 하나의 데이터만 들어가고

그 데이터들이 연속적으로 연결되어 있는 모양을 뜻합니다.

네이버 지하철 노선도

일상생활에서는 지하철 노선도를 예로 들 수 있겠네요.

선형 구조와는 다르게

비선형 구조는 비순차적인 성질을 지닌

자료들을 표현하는데 적합한 구조를

의미합니다.

그럼 선형구조에서

순차 리스트를 먼저 알아보러 갑시다.

728×90

[JAVA ] 자료구조- 단순구조 선형구조 비선형구조 해싱

728×90

반응형

컴퓨터는 자료의 특성에 따라 다양한 자료구조 기법을 사용합니다. 자료구조에는 단순구조, 선형구조, 비선형구조가 있습니다.

단순구조 : 정수, 실수, 문자, 문자열 등 자료의 형태

선형 구조 : 자료 간의 연결 관계가 [1:1] 관계를 가지는 형태로 자료들이 기다란 선처럼 연결되어 있는 구조

비선형구조 : 자료 간의 연결 관계가 [하나 : 여러 개] 또는 [여러 개 : 여러 개] 의 관계를 가지는 형태로, 나뭇가지 모양이나 그물 모양처럼 얽혀 있는 구조

추가 – 해싱 : 자료 검색을 위한 구조

선형 구조 : 자료를 구성하는 데이터를 순차적으로 나열시킨 형태

선형 자료구조 란 하나의 자료 뒤에 하나의 자료가 존재하는 것이다.

란 하나의 자료 뒤에 하나의 자료가 존재하는 것이다. 자료들 간의 앞뒤 관계가 1:1의 선형관계

1) 배열 (Arrays) :

동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합.

논리적 저장 순서와 물리적 저장 순서가 일치하기 때문에 인덱스로 해당 원소에 접근함.

정해진 크기의 메모리를 먼저 할당 받아사용 하여, 정적인 자료 구조로 기억 장소의 추가가 어렵고 데이터 삭제 시 데이터가 저장되어 있던 기억 장소는 빈 공간으로 남아있어 메모리 낭비가 발생

2) 연결 리스트(Liked List) : 자료를 연속적으로 배열 시키지않고 자료가 추가될때마다 메모리를 할당 받음, 각 원소들은 이전, 다음 위치를 기억하여 삽입, 삭제 하므로 동적인 크기를 가짐. 논리적위치와 물리적위치가 다름. index로 찾아가는 배열보다 순차적으로 위치를 찾아감으로써 소요되는 시간은 크다. 3) 스택(Stack) : 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어진다. LIFO(Last In First Out): 가장 나중에 삽입된 자료가 가장 먼저 삭제 Stack nStack = new Stack(); nStack.push(1); nStack.push(2); nStack.push(3); nStack.push(4);//넣기 nStack.pop(); //빼기 – 4부터제거

4) 큐(Queue) : 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어진다. FIFO(First In First Out): 가장 먼저 삽입된 자료가 가장 먼저 삭제 * Queue는 인터페이스 구현체인 Linked List의 생성자를 사용 Queue iQ = new LinkedList(); iQ.offer(1); iQ.offer(2); iQ.offer(3); iQ.offer(4); iQ.offer(5); iQ.offer(6);// 넣기 iQ.poll();//빼기 – 1부터 제거 비선형 구조 : 선형 구조와는 달리 비선형적인 계층 구조 비선형 자료구조 란 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것이다.

란 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것이다. 자료들 간의 앞뒤 관계가 1:n, 또는 n:n 의 관계

단순한 반복으로 탐색할 수가 없기 때문에 스택(stack)이나 큐(queue)와 같은 자료구조를 활용해 탐색할 방법과 순서를 만들어 탐색하는 것이 일반 적 ( 트리에서 노드가 n번일때, 왼쪽 자식노드는 2*n 오른쪽 자식노드는 2*n + 1의 관계)

1) 그래프(graph) : 정점(노드)과 선분(간선)의 집합 노드와 간선으로 이루어져있는 사이클 형태의 그래프 정점(vertex) : 객체(= 노드) 간선(edge) : 연결관계(= 링크) ,방향성이 있기도 없기도함. G(V,E) 로 표현 – G : graph, V : vertex, E : edge 종류 : 방향성(Directed) 그래프: 간선에 방향성이 포함된 그래프

무방향성(Undirected) 그래프: 방향성이 없는 그래프

가중치(Weight) 그래프: 간선에 가중치 정보가 포함된 그래프

부분(Sub) 그래프: 본래 그래프의 일부 정점 및 간선으로 이루어진 그래프 구현 방법 에 따라 인접행렬, 인접리스트 , 탐색 방법에 따라 BFS(Bread First Search), DFS(Depth First Search) 로 구분 2) 트리(Tree) 부모노드와 자식 노드간의 연결로 구성, 부모 자식간 계층구조가 명확함 ,그래프의 일종 한노드는 여러노드를 가리킬수 있고 여러 노드가 한노드를 가리킬수 는 없으므로 모든노드는 단하나의 부모노드를 가짐 다른 노드와 연결되지 않는 노드는 존재하지 않는다.

node: 트리를 구성하고 있는 각 요소

Edge(간선): 트리를 구성하기 위해 노드와 노드를 연결하는 선

Root Node: 최상위 계층에 존재하는 노드

level: 트리의 특정 깊이를 가지는 노드의 집합(루트노드로 부터 깊이를 말하며 루트노드의 level 은 1이다)

degree(차수): 하위 트리 개수 / 간선 수 (degree) = 각 노드가 지닌 가지의 수(부속트리개수)

Terminal Node ( = leaf Node, 단말 노드) : 하위에 다른 노드(자식노드)가 연결되어 있지 않은 노드 (차수가 0임)

: 하위에 다른 노드(자식노드)가 연결되어 있지 않은 노드 (차수가 0임) Internal Node (내부노드, 비단말 노드) : 단말 노드를 제외한 모든 노드로 루트 노드를 포함한다.(차수가 1이상)

: 단말 노드를 제외한 모든 노드로 루트 노드를 포함한다.(차수가 1이상) Sibling Node (형제노드) : 부모가 같은 노드

Sub tree : 트리안의 트리 (부속트리를 말함)

종류 :

완전 이진 트리(Completable Binary Tree), 포화 이진 트리(Perfect Binary Tree), 전 이진 트리(Full Binary Tree)

반응형

* 해싱 (Hashing)

해싱은 키에 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근한다.

해시 테이블(hash table) : 이렇게 키에 대한 연산에 의해 직접 접근이 가능한 구조

해싱(Hashing) : 어떤 항목의 키만을 가지고 바로 항목이 들어 있는 배열의 인덱스를 결정하는 기법으로 해시 테이블을 이용한 탐색

해시 함수 : 키를 입력으로 받아 해시 주소(hash address)를 생성하고 이 해시 주소를 해시 테이블(hash table)의 인덱스로 사용

키값 k를 입력받아 해시 함수 h(k)로 연산한 결과인 해시 주소 h(k)를 인덱스로 사용하여 해시 테이블에 있는 항목에 접근한다. 해시 테이블 ht는 M개의 버킷(bucket)으로 이루어지는 테이블로서 ht[0], ht[1], ….. , ht[M-1]의 원소를 가진다.

728×90

반응형

자료구조 06. 선형구조, 비선형구조

2019.04.12 TIL

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

# 질문에 답하기

자료구조

자료구조에 대한 정의는 너무나도 많다.

그 중에 가장 마음에 와닿는 글이 있어서 정리를 해본다.

” 프로그래밍은 결국 데이터를 다루는 방법입니다. 데이터를 입력받고, 데이터를 처리하여 도출된 데이터를 출력합니다.

자료구조는 데이터를 입력 받아 어떻게 저장하는 지에 대한 학문입니다.

데이터를 어떻게 저장하는지(입력), 어떻게 찾는지(탐색), 어떻게 지우는지(삭제)가

자료구조의 종류에 따라 천차만별입니다.

그럼, 어떤 자료구조를 언제 사용해야 할까요? 이는 결국 성능과 효율적인 메모리 사용에 달려있습니다.

프로그래머가 처한 상황에서 가장 뛰어난 성능을 내고 또 가장 효율적으로 메모를 사용한다면 그 자료구조를 선택하면 됩니다.

알고리즘은 방법론입니다. 많은 알고리즘이 있지만, 자료구조에 연관된 알고리즘만 언급하겠습니다.

자료구조와 알고리즘은 매우 밀접한 연관을 가지고 있습니다. 위에 언급한 삽입 정렬과 병합 정렬은 엄밀히 말해 알고리즘입니다. 하지만 자료구조를 배울 때 반드시 마주치게 되지요. 알고리즘은 자료구조를 구현하는 방법이라고 보시면 될 것 같습니다. ”

“프로그래머가 갖추어야 할 ‘기본’은 무엇인가?” 넥슨 개발자 컨퍼런스(NDC) 참관 후기 | 패스트캠퍼스

자료구조의 구성

insert : 어떻게 데이터를 넣을 것인가? search : 어떻게 데이터를 찾을 것인가? delete : 어떻게 데이터를 삭제할 것인가?

자료구조의 분류

단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입

선형구조 : 저장되는 자료의 전후관계가 1:1 (리스트, 스택, 큐 등)

비선형구조 : 데이터 항목 사이의 관계가 1:n 또는 n:m (트리, 그래프 등)

파일구조 : 서로 관련된 필드들로 구성된 레코드의 집합인 파일에 대한 자료구조

출처 : 강의노트 17. 알고리즘, 자료구조 개요 · 초보몽키의 개발공부로그

선형구조(배열과 linked list 그리고 스택과 큐)

배열(array) 같은 자료형의 변수를 모아 놓은 것 인덱싱 활용 가능(search) 검색으로 배열을 이길 수는 없다. 데이터가 군집화 되어있다. 캐시히트의 가능성이 높다. 검색속도가 그 어떤 자료구조보다 빠르다.O(1) 데이터의 삽입과 삭제가 느리다. 최악의 경우 O(n) 맨 앞에 데이터를 삽입하게 되면 모든 데이터를 복사해서 한칸씩 다 옴겨야 한다. 배열은 공백을 인정하지 않는다. O(n) Linked list ( 데이터의 삽입과 삭제가 많고, 검색이 별로 없을 때) 검색 속도 최악 O(n) 데이터의 삽입과 삭제는 O(1) 어디든 데이터를 놓고 연결만 해주면 된다. 데이터가 흩어져 있다. 캐시히트의 가능성이 굉장히 떨어진다. -> 캐시미스 발생 페이지폴트까지 날수도 있다. 미리 힙을 주고 흩어져 있는 문제를 해결할 수 있다. 다이나믹 힙 Stack 무언가를 쌓는다라는 의미를 가진 자료구조이다. LIFO(Last in, First out) : 후입선출 Queue 우리의 일반적인 줄서기 FIFO(First in, First out) : 선입선출

만약에 배열과 Linked list 2개 다 사용가능한 상황이면 무조건 배열을 쓴다.

배열은 메모리의 스택에 할당해서 사용한다.

파이썬에서의 list

파이썬의 list는 배열과 다르다.

파이썬은 포인터 배열이다.

포인터는 배열처럼 일렬로 되어 있으나, [1,2,3]

1은 class int 여서 상수객체이기 때문에 4바이트보다 훨씬 크다.

파이썬의 리스트는 파이썬에서는 같은 자료형의 변수를 모아 놓은 것이 아니다.

파이썬에는 배열이라는 자료구조가 없는 것이다. 즉 지원하지 않는다.

예시

얕은 복사

>>> #얕은 복사 >>> li = [1,2,3,4] >>> li3 = li.copy() # or copy.copy(li)도 가능 >>> li3 #[1,2,3,4] >>> li3.append(5) >>> li3 #[1,2,3,4,5] >>> li #[1,2,3,4] >>>

위의 내용을 이해하기 위해서는 단순히 객체가 [1,2,3,4]의 형태처럼 메모리에 올라가 있다고 생각하면 안된다.

실제적으로 파이썬에서 list를 생성한다고 하더라도 모두 모여서 메모리에 올라가지 않는다. [* , * , * , * ]와 같은 형태로 생성되어 첫번째 * 은 1을 가르키고 두 번째 * 은 2를 가르키고 이런 형식이다. 얕은 복사는 [* , * , * , * ]를 복사해 온 것이다. 따라서 li3는 li의 [* , * , * , * ]를 복사해온 것이다. 따라서 li3에서 append를 통해 새로운 요소를 추가하게 되면 li3의 [* , * , * , * ]가 [* , * , * , * , * ]가 되어서 마지막 * 가 새로운 요소를 가르키게 된다. 따라서 li3가 변경되더라도 li는 변경되지 않는다.

하지만 여기에서도 예외는 있다.

>>> #얕은 복사 >>> li = [1,2,3,[4,5]] >>> li3 = li.copy() >>> li3 #[1,2,3,[4,5]] >>> li3[3].append(6) >>> li3 # [1,2,3,[4,5,6]] >>> li # [1,2,3,[4,5,6]] >>>

위에서 보면 알 수 있듯이 원래 얕은 복사에서라면 li3를 바꾼다고 해서 li가 바뀌어서는 안된다. 하지만 li는 변경되었다. 그렇다면 li3는 왜 변경되었을까? 위에 언급한대로 li3는 li의 [* , * , * , * ]를 복사해 온 것이다. 위에 예시에서 마지막 * 은 3번째 인덱스 [4,5]을 가르키고 있다. li3와 li 모두 [4,5]을 가르키고 있는 것이다. 따라서 li3를 통해 [4,5]를 변경하게 되면 마지막 *가 가르키는 것이 변경되는 것이므로 li 역시 변경되게 된다.(즉 li와 li3의 내부리스트는 각은 객체를 참조하기 떄문이다.)

이러한 것을 맡기 위해서는 깊은 복사가 필요하다.

깊은 복사

>>> import copy #deepcopy를 위해서는 copy를 import 해주어야 한다. >>> li = [1,2,3,4] >>> li4 = copy.deepcopy(li) >>> li4 # [1,2,3,4] >>> li4.append(5) >>> li4 # [1,2,3,4,5] >>> li # [1,2,3,4] >>> li = [1,2,3,[4,5]] >>> li4 = copy.deepcopy(li) >>> li4 # [1,2,3,[4,5]] >>> li4[3].append(6) >>> li4 # [1,2,3,[4,5,6]] >>> li # [1,2,3,[4,5]]

깊은 복사를 통해서는 완전히 동일한 새로운 객체를 생성하는 것이므로 li4에 어떤 요소를 추가해도 li는 전혀 영향을 받지 않는다. 따라서 상황에 맡게 단순 객체 복사, 얕은 복사, 깊은 복사를 사용해야 한다.

참고 : 2019_03_23_TIL(깊은 복사 얕은 복사)

비선형구조

트리

connected acyclic graph 사이클(순환)이 없는 연결된 그래프 루트노드(root)를 반드시 가진다. 트리를 구성하는 노드 간에 단순 경로가 반드시 존재한다. 단순경로란 지나왔던 접점을 다시 지나지 않는 경로 한 개의 노드에서 다른 한개의 노드를 선택하면 단순 경로가 항상 존재 루트 노드를 제외한 나버지 노드들은 분리집합으로 분할이 가능하며 이 집합들은 각각 하나의 트리를 구성한다(재귀적 정의)

트리 용어 정리

부모노드와 왼쪽 자식노드 , 오른쪽 자식노드로 나누어짐

루트노드 : 뒤로 뒤집어서 보면 여기서부터 쭉 퍼져나가므로 root(뿌리) 노드이다. 트리의 시작점

에지 : 노드를 연결하는 선

리프노드 : 자식노드가 하나도 없는 노드

인터널노드 : 자식노드가 하나라도 있는 노드

차수 : 자식노드의 갯수

트리의 차수 : 트리에 있는 노드들 중 최대 차수

이진 트리

어떤 노드의 자식 노드의 수가 최대 2개인 트리

이진 트리의 종류

포화 이진 트리 모든 레벨이 꽉 차 있다. 즉 모든 노드들의 2개의 자식노드를 가지고 있다.(리프노드 제외)

완전 이진 트리 트리의 노드가 위에서 아래로, 왼쪽에서 오른쪽으로 채워지는 트리 가장 높은 레벨 단계에서 항상 왼쪽에서 오른쪽으로 채워져 있어야 한다.

트리의 순회는 다음 장에서 추가로 공부한다!

순회란 트리의 모든 노드를 중복하지 않으면서 방문하는 것을 말하며, 데이터를 찾고, 저장하고, 삭제하는데 쓰인다.

[자료구조]선형 구조의 종류와 설명

선형구조란?

데이터가 연속적으로 연결되어 있는 모양으로 구성하는 방법

자료를 구성하는 원소들을 순차적으로 나열시킨 형태

선형구조의 종류

1. 선형 리스트(Linear List) ex) 배열(Array)

연속적인 기억공간에 배정하며 각 요소들은 동일 데이터 타입으로 <인덱스, 값>의 쌍으로 표현된다.

정적인 데이터타입으로 배열의 크기는 한번 정하면 크기를 변경 할 수 없다. (데이터 낭비가 될 수 있음!)

특징

· 가장 간단한 자료구조

· 접근 속도가 빠름

· 기억장소를 연속으로 배정받기 때문에 기억장소 이용 효율은 밀도가 1로서 가장 좋음

· 자료의 개수가 n개 일때, 삽입시 평균 이동 횟수 : n+1/2, 삭제시 평균 이동 횟수 : n-1/2

· 삽입, 삭제 시 자료의 이동이 필요하기 때문에 작업이 번거로움

2. 연결 리스트(Linked List)

자료들을 반드시 연속적으로 배열시키지는 않고 임의의 기억 공간에 기억시키되, 자료항목의 순서에 따라

노드의 포인터 부분을 이용하여 서로 연결시킨 자료구조이다.

동적인 데이터타입으로 한 노드당 4Byte의 크기를 가지고 있다.

특징

· 삽입, 삭제 작업이 용이하다.

· 기억공간이 연속적으로 놓여있지 않아도 저장이 가능하다.

· 접근 속도가 느리다. (포인터를 찾아가는 시간이 필요하기 때문에 배열에 비해 접근속도 느림)

· 중간 노드의 연결이 끊어지면 그 다음 노드를 찾기 힘들다.

3. 스택(Stack)

가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO : Last In First Out)구조로 저장하는 형식

특징

· 자료의 삽입, 삭제 작업이 한쪽 방향에서만 이루어지는 자료구조

· 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO : Last-In, First-Out)방식으로 처리

· T(TOP Pointer) – 스택 포인터(SP)라고도 함. Stack으로 할당된 기억공간에 가장 마지막으로 삽입된 자료가 기억된 공 간을 가리키는 요소

메서드

· pop(): 스택에서 가장 위에 있는 항목을 제거한다.

· push(item): item 하나를 스택의 가장 윗 부분에 추가한다.

· peek(): 스택의 가장 위에 있는 항목을 반환한다.

· isEmpty(): 스택이 비어 있을 때에 true를 반환한다.

4. 큐(Queue)

컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 선입선출(FIFO : First In First Out)

구조로 저장하는 형식

특징

선형 리스트의 한쪽에서는 삽입, 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료구조

· 큐(Queue)는 연결리스트 로 구현할 수 있다.

· 시작과 끝을 표시하는 두 개의 포인터가 있다.

· 창구 업무처럼 서비스 순서를 기다리는 등의 대기 행렬 처리에 사용

메서드

· add(item): item을 리스트의 끝부분에 추가한다.

· remove(): 리스트의 첫 번째 항목을 제거한다.

· peek(): 큐에서 가장 위에 있는 항목을 반환한다.

· isEmpty(): 큐가 비어 있을 때에 true를 반환한다.

[Data Structure] 선형(Linear) & 비선형(NonLinear) 자료구조

자료구조의 분류는 크게 2가지로, 선형 구조(Linear)와 비선형 구조(NonLinear)가 있습니다.

선형 구조(Linear)

선형 구조란, 자료를 구성하는 원소들을 하나씩 순차적으로 나열시킨 형태입니다.

자료들간의 앞, 뒤 관계가 1:1의 관계로 배열과 리스트가 대표적이며 스택과 큐도 이에 해당됩니다.

비선형 구조(NonLinear)

비선형 구조는 앞서 알아본 선형 구조와 달리, 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 형태입니다.

자료들간의 앞, 뒤 관계가 1:n 또는 n:n의 관계를 나타냅니다.

트리와 그래프가 대표적이며, 계층적 구조를 나타내기에 적절합니다.

이미지 정리!

정리~

키워드에 대한 정보 선형 자료 구조

다음은 Bing에서 선형 자료 구조 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [10분 테코톡] 🐻 중간곰의 선형 자료구조

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기
[10분 #테코톡] #🐻 #중간곰의 #선형 #자료구조


YouTube에서 선형 자료 구조 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [10분 테코톡] 🐻 중간곰의 선형 자료구조 | 선형 자료 구조, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  베링거 X32 사용법 | X32 진짜 완전 기초 1 17 개의 가장 정확한 답변

Leave a Reply

Your email address will not be published. Required fields are marked *