Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 자료구조
- javascript
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 데이터
- postgresql
- 네트워크
- python
- 프로그래머스
- backjoon
- Spring Security
- 시큐리티
- JPA
- 리눅스
- Oracle
- spring
- 스프링
- 스프링부트
- 자바
- 백준
- baekjoon
- DB
- 파이썬
- springboot
- Java
- 플러터
- Flutter
- 자바스크립트
- CS
- CS지식
- 데이터베이스
Archives
- Today
- Total
Jin's Dev Story
[자료구조] 연결 리스트(Linked List) 본문
연결 리스트(Linked List)
- 연속적인 메모리 위치에 저장되지 않는 선형 데이터 구조
- 각 노드는 데이터 필드와 다음 노드에 대한 참조를 포함하는 노드로 구성
연결 리스트(Linked List) 사용 이유
- 배열은 비슷한 유형의 선형 데이터를 저장하는데 사용할 수 있지만 제한 사항이 있음
1. 배열의 크기가 고정되어 있어 미리 요소의 수에 대해 할당을 받아야 함
2. 새로운 요소를 삽입하는 것은 비용이 많이 듬
장점
- 동적 크기
- 삽입/삭제 용이
단점
- 임의로 액세스를 허용할 수 없음
→ 즉, 첫 번째 노드부터 순차적으로 요소에 액세스 해야함 - 포인터의 여분이 메모리 공간이 목록의 각 요소에 필요
LinkedList 선언
LinkedList list = new LinkedList();//타입 미설정 Object로 선언된다.
LinkedList<Student> members = new LinkedList<Student>();//타입설정 Student객체만 사용가능
LinkedList<Integer> num = new LinkedList<Integer>();//타입설정 int타입만 사용가능
LinkedList<Integer> num2 = new LinkedList<>();//new에서 타입 파라미터 생략가능
LinkedList<Integer> list2 = new LinkedList<Integer>(Arrays.asList(1,2));//생성시 값추가
LinkedList 값 추가
LinkedList<Integer> list = new LinkedList<Integer>();
list.addFirst(1);//가장 앞에 데이터 추가
list.addLast(2);//가장 뒤에 데이터 추가
list.add(3);//데이터 추가
list.add(1, 10);//index 1에 데이터 10 추가
LinkedList<Student> list = new LinkedList<Student>();
Student student = new Student(name,age);
members.add(student);
members.add(new Member("홍길동",15));
LinkedList 값 삭제
LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3,4,5));
list.removeFirst(); //가장 앞의 데이터 제거
list.removeLast(); //가장 뒤의 데이터 제거
list.remove(); //생략시 0번째 index제거
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거
LinkedList 값 출력
LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.get(0));//0번째 index 출력
for(Integer i : list) { //for문을 통한 전체출력
System.out.println(i);
}
Iterator<Integer> iter = list.iterator(); //Iterator 선언
while(iter.hasNext()){//다음값이 있는지 체크
System.out.println(iter.next()); //값 출력
}
LinkedList 값 검색
LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.contains(1)); //list에 1이 있는지 검색 : true
System.out.println(list.indexOf(1)); //1이 있는 index반환 없으면 -1
'CS 지식 > [자료구조]' 카테고리의 다른 글
[자료구조] 트리(Tree) (0) | 2023.07.19 |
---|---|
[자료구조] 힙(Heap) (0) | 2023.07.19 |
[자료구조] 스택 & 큐 (0) | 2023.07.19 |
[자료구조] Array vs ArrayList vs LinkedList (0) | 2023.07.19 |
[자료구조] 배열 (0) | 2023.07.18 |