[자료구조] LinkedList 구현 - size, get, indexOf 메소드 [JAVA]
·
자료구조 + 알고리즘
ㅇsize() ㄴ자료를 갱신할때마다 size 필드값을 변경해왔기 때문에, 간단히 size 필드값만 리턴하면 된다. ㄴ만약 size필드값을 그때그때 수정해주지 않았더라면, size()메소드를 호출할 때 모든 노드의 인덱스를 돌면서 카운팅해야 해서 매우 무거웠을 것이다. ㅇget ㅇindexOf
[자료구조] LinkedList 구현 - remove, removeFirst, removeLast [JAVA]
·
자료구조 + 알고리즘
++자바에서는 '삭제된' 노드가 갖고있었던 값을 리턴한다는거~! 기억하고 시작 ㅇremoveFirst() ㅇremove() ㄴ첫번째 인덱스, 끝 인덱스를 고려해 tail과 head를 따로 처리 ㅇremoveLast() LinkedList에서 하나의 노드는 next노드만 알고, 이전노드를 알 수 있는 정보는 없다. ㄴ다음에 배울 Doubly Linked List 이중연결리스트를 배울거다. 연결되는 방향이 양방향이다! 각각의 노드가 이전노드, 다음노드 가리키는 변수 다 가지고 있다. ㄴ근데 왜 LinkedList 쓰는데?? 다 장단점이 있는거다~! 공간(메모리)효율성 관련.
[자료구조] LinkedList 구현 - toStrnig [JAVA]
·
자료구조 + 알고리즘
toString()을 재정의하지 않았다면 System.out.println(numbers); 했을 때 정제되지 않은 그런 문자열이 출력된다. (toString 복습하기) 그래서 LinkedList API에서 toString()을 직접 재정의해보자.
[자료구조] LinkedList 구현 - add [JAVA]
·
자료구조 + 알고리즘
LinkedList에서 중간에 어떤 노드를 추가시키려면 1. 추가시키려는 인덱스의 이전 노드를 알아야 한다 2. 그 이전 노드의 넥스트로 연결을 해야 한다
[자료구조] LinkedList 구현 - node API 구현하기 [JAVA]
·
자료구조 + 알고리즘
Node class를 리턴하는 노드API를 작성해보자. Node클래스는 내부적으로 작동되기 때문에 public으로 선언하지 않는다고 한다. 일단 실행클래스에서 System.out.println()으로 numbers.node(0)값을 테스트해보려고 public으로 선언했다고 한다. 확인 후에 public을 지울 것이다. >>Node 객체를 직접 리턴하지 않을 것이다. 일단 작성한 Node 메소드 부분을 보자. x라는 노드 변수를 하나 만든다. 첫 값인 head값을 넣는다. 그리고 사용자가 입력한 index 수만큼 x=x.next라는 코드를 반복한다. x = x.next; x = x.next; x = x.next; . . . x에 계속 다음값, 다음값, ... 넣는 개념이다. 그럼 head값에서부터 inde..
[자료구조] LinkedList 구현 - 데이터 추가 / addLast[Java]
·
자료구조 + 알고리즘
하이~~자료구조 오랜만!! 살짝 복습하고 왔다. 요즘 맨날 하체근력운동하는 것처럼 꾸준히 자료구조 공부하자 으쌰으쌰 새로 추가한 addLast 메소드를 살펴보자. 확실히 필드, 메소드, 생성자, 도트연산자 등 학습하고 나니까 자료구조를 공부하기 수월해졌다.
[자료구조] LinkedList 구현 - 데이터 추가 / addFirst[Java]
·
자료구조 + 알고리즘
(cf. linkedlist ---head, tail, size, node) addFirst를 구현해보자. 오타난걸 캡쳐했다.. 화살표가 가리키는 곳에 imput 아니고 input이다. 가장 먼저 input을 받아서 노드 객체를 생성해야 하므로 Node newNode = new Node(input); >>만들어 놓은 Node 클래스를 객체화한 것이다! "노드 객체를 생성" addFirst()가 호출 될 때마다 새로운 노드를 만든다. Node newNode = new Node(input); 이게 있으니까! ^-^ addFirst로 노드 객체를 만드는 거다. Node 클래스의 생성자인 public Node(Object input) 부분에 input값이 들어갈 거고, (자바: 객체의 생성과 동시에 인스턴스 변..
[자료구조] LinkedList 구현 - 객체생성[Java]
·
자료구조 + 알고리즘
자바에서 LinkedList를 구현하는 방법을 보자. ArrayList와 내부적인 구현방법이 다르다는 것에 집중해서 배워보자. linkedlist는 arryalist처럼 내부적으로 배열을 사용하지 않는다. 객체를 만들고, 객체와 객체를 참조(연결)하는 방식의 linkedlist 노드(버텍스/엘리먼트)... 만들 거다 각각의 노드는 링크필드(변수)를 통해 연결될 것이다. 헤드 - 링크드리스트에서 누가 첫번째 노드인가? 테일 - 누가 끝 노드인가?
[자료구조] Linked list 데이터 조회 [VisuAlgo.net]
·
자료구조 + 알고리즘
두 가지 데이터 조회 방법이 있다. 1. 77이라는 값을 가진 노드를 조회하겠다. 2. 네번째 자리 (인덱스3)에 있는 값을 가져오고 싶다. 순서대로 알아보자. 77이라는 값을 가진 노드를 조회하겠다. ( v = 77 이라고 visualgo.net에서 설정하고 간다. ) 간단하다. index = 0, temp = head while (temp.item !=v) index++, temp = temp.next if temp == null return NOT_FOUND 그냥 코드 읽어보면 다 알거다. 네번째 노드의 데이터를 조회하고 싶다면 어떻게 할까? 첫번째 노드로 접속하고, 넥스트하고 인덱스 카운트, 넥스트하고 인덱스 카운트.. 하면서 해당 인덱스로 왔을 때, 그 노드에 있는 값을 출력해주면 된다. '물어..
[자료구조] Linked list 데이터 삭제 [VisuAlgo.net]
·
자료구조 + 알고리즘
visualgo.net 접속하기! Linked List에서 데이터를 삭제하는 과정을 시각적으로 확인해보고, 코드도 살펴보자. 1. Vertex pre = head >>pre라는 노드를 헤드로 지정한다. '현재 head와 pre는 똑같이 15라는 노드를 가리키고 있다' 2. for (k=0 ; k < i-1 ; k++) pre = pre.next 먼저, 나는 인덱스3에 있는 데이터를 삭제하려고 i=3으로 입력했다. 그럼 인덱스2에 pre라는 자리를 줘야 한다. 인덱스3 이전 노드의 정보가 필요하니까! 그럼, 첫번째 노드부터, 인덱스2 노드까지 .next를 이용하여 가야 한다. pre = pre.next가 그것이다. k=0,1에서 수행이 된다. 3. Vertex del = pre.next, aft = del..