자료구조

자료구조의 소개(자료구조, 알고리즘, 데이터 추상화)

yejin72 2023. 4. 10. 14:24
728x90
프로그램 = 자료구조 + 알고리즘

 

프로그램의 자료구조와 알고리즘으로 만들어진다. 그러므로 개발자가 효율적인 프로그램을 작성하기 위해서는 자료구조란 무엇이고 어떤 종류가 있는지, 어떻게 하면 효율적인 알고리즘을 구현할 수 있을지를 고민해야 한다. 또한, 이 둘의 설명과 더불어 크고 복잡한 문제를 단순화시킬 수 있는 데이터 추상화 개념을 숙지해야 한다.

 

 

 

 자료 구조란?

자료구조란 자료를 효율적으로 사용하기 위해 자료의 특성에 따라 분류하고 구성, 저장, 처리하는 모든 작업이다.

자료구조의 종류

 

 

 알고리즘이란?

알고리즘이란 특정한 일을 수행하기 위한 명령어의 유한 집합을 말한다.

 

 기준

  • 입력: (외부)원인 >= 1
  • 출력: 결과 >= 1
  • 명백성: 모호하지 않은 명확한 명령
  • 유한성: 한정된 수의 단계 후에는 반드시 종료
  • 유효성: 각 명령어들은 실행 가능한 연산이어야 함

 

 기술 방법

  • 자연어: 사람이 읽기 쉬움, 자연어 단어들을 정확하게 정의하지 않으면 의미 전달이 모호함
  • 흐름도(flow chart): 직관적이어서 이해하기 쉬움, 복잡한 알고리즘은 매우 복잡함
  • 유사 코드(pseudo-code): 가장 많이 사용되는 기술 방법, 알고리즘의 핵심적인 내용에만 집중 가능
  • 프로그래밍 언어: 가장 정확하게 기술 가능, 너무 구체적이어서 알고리즘의 핵심적인 내용의 이해 어려움

 

 

 데이터 추상화

  • 추상화(Abstraction): 기억할 대상의 구별되는 특징만을 단순화하여 기억하는 기능
  • 자료(Data): 프로그램의 처리 대상이 되는 모든 것
  • 자료형(Data Type): 데이터의 집합과 연산의 집합
  • 추상 자료형, 추상 데이터 타입(ADT, Abstract Data Type): 데이터 타입의 특성을 논리적으로 추상화하여 정의한 자료형

 

 유래

추상화 -> 정보은닉기법 -> 추상 자료형

 

 정의

  • 객체: 추상 데이터 타입에 속하는 객체
  • 연산: 이들 객체 사이의 연산, 연산은 추상 데이터 타입과 외부를 연결하는 인터페이스의 역할을 한다.

 

 추상화와 구체화

  • 추상화: "무엇(what)인가?"를 논리적으로 정의 -> 알고리즘 정의
  • 구체화: "어떻게(how) 할 것인가?"를 실제적으로 표현 -> 프로그램 구현

 

 

< C언어의 자료구조 기술규칙 >
- 상수: 대문자 (ex. #define SIZE 100)
- 변수명: 소문자, 언더라인
- 함수명: 동사
- typedef <새로운 타입의 정의> <새로운 타입 이름>;
: C언어에서 사용자 정의 데이터 타입을 만드는 경우에 쓰이는 키워드

 

 

출처) C언어로 쉽게 풀어쓴 자료구조

 

728x90

'자료구조' 카테고리의 다른 글

세그먼트 트리(Segment Tree) 자료구조  (0) 2023.02.04
그래프(Graph)  (0) 2022.12.30
해시 테이블(HashTable)  (0) 2022.12.30
트리(Tree)와 힙(Heap)  (0) 2022.12.30
스택(Stack)과 큐(Queue)  (0) 2022.12.29