JAVA

[Java] 자료구조(선형구조와 비선형구조)

순두부 호랑이 2022. 8. 28. 12:04
728x90
SMALL

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

ex) 리스트(배열),연결리스트,덱, 스택, 큐

 

비선형구조: 하나의 자료 뒤(안)에 여러개의 자료가 존재할 수 있는것

ex) 트리, 그래프

 

선형구조

[리스트(배열Array)]

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

- 가장 보편적이고 단순한 선형 리스트 구조이자 정적인 자료 구조

- 항목을 순차적으로 연속적인 기억장소에 배당하므로 자료의 물리적 위치와 논리적 위치가 동일

- 데이터를 순차적으로 삽입하거나 삭제를 해야할 때 가장 효과적

장점 단점
- 삽입, 삭제가 발생하지 않는 정적인 응용 업무에서 처리해야할 자료가 언제나 같은 개수를 유지할 경우 기억장소를 100% 활용 가능
- 인덱스를 통한 조회의 속도가 빠름
- 메모리 사용이 비효율적
- 프로그램 실행 전에 최대 크기로 배열 크기 선언 필요
- 배열의 모든 요소를 연속적으로 메모리에 저장
- 배열의 요소를 삽입/삭제 후에 연속적인 물리 주소를 유지하기 위한 작업 필요
- 요소를 삭제해도 크기의 변화 없음
package ArrayList;

import java.util.ArrayList;

public class arraylist생성 {

	public static void main(String[] args) {
		// 1. ArrayList 생성
		// 크기지정(기본값 : 10)
		ArrayList<String> al = new ArrayList<String>(7);
		
		//2. 요소 삽입
		//2-1. 맨마지막 자리에 삽입
		al.add("python"); //0
		al.add("java"); //1
		al.add("javascript"); //2
		
		// 2-2. 특정 자리에 삽입(인덱스번호(int),삽입할 데이터)
		al.add(1,"c++");
		
		//3. 요소 개수
		int n = al.size();
		System.out.println(n);
		
		//4. 특정 위치의 요소 알아내기
		System.out.println(al.get(1));
		
		for(String s : al) {
			System.out.println(s);
		}
		
		//5. 요소 삭제
		//5-1. 특정 인덱스에 요소 삭제
		al.remove(2);
		
		//5-2. 전체 삭제
		al.clear();
		
		for(String s:al) {
			System.out.println(s);
		}
		

	}

}

<뮤직리스트 만들기>


연결 리스트[Linked List]

- 차례로 연결된 노드를 표현하는 동적인 자료구조로 단방향과 양방향이 존재

- 노드와 링크로 구성

   - 노드는 실제 정보를 담고 있는 하나의 단위

   - 링크는 노드 간의 위치 정보를 저장 -> 연결 리스트의 순서를 유지할 수 있도록 하는 연결고리 역할을 담당

장점 단점
- 동적으로 메모리 사용 가능
- 메모리 사용이 효율적 -> 필요가 없으면 메모리 할당을 해제
- 데이터 재구성이 용이 -> 데이터 추가/삭제 빠름
- 대용량 데이터 처리에 적합
- 특정 위치 데이터 검색이 느림
- 메모리의 추가적 사용 필요

 

 

728x90
LIST