일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- java
- spotify
- 스포티파이
- 회귀
- SECS-II
- 프로그래머스
- Gem
- SECS/GEM
- SW Expert Academy
- 회원가입
- 자바
- SWEA
- c
- Spotify Api
- CS
- MYSQL
- Spring JPA
- linux
- 파이썬
- C++
- programmers
- Baekjoon
- Computer Science
- regression
- spring boot
- modern c++
- 백준
- Spring
- python
- SECS
Archives
- Today
- Total
비버놀로지
[Computer Science] 원형연결리스트 본문
728x90
- 마지막 노드와 첫번째 노드가 연결되어 링크를 따라 순회하면 이전 노드에 접근 가능
- 원형 연결 리스트는 마지막에 노드를 삽입하는 것이 곧 리스트의 첫번째에 노드를 삽입하는 것과 같은 의미를 가진다.
import java.util.Scanner;
public class CircularLinkedList {
class Node {
private int data;
private Node next;
public Node() {
this.data = 0;
this.next = null;
}
public Node(int data) {
this.data = data;
this.next = null;
}
public int getData() {
return this.data;
}
public void setNext(Node node) {
this.next = node;
}
public Node getNext() {
return this.next;
}
}
private Node tail;
public CircularLinkedList() { // init
tail = null;
}
// 삽입
public void insertFront(int data) { // list의 앞에 삽입
Node newNode = new Node(data); // 새로운 노드 생성
if (tail == null) { // list가 비어있으면
tail = newNode;
newNode.setNext(newNode);
} else { // list에 노드가 있으면
newNode.setNext(tail.getNext()); // newNode.next = tail.next(첫노드)
tail.setNext(newNode); // tail.next는 새로운 노드를 가리킨다
}
}
public void insertLast(int data) { // list의 뒤에 삽입
Node newNode = new Node(data); // 새로운 노드 생성
if (tail == null) { // list가 비어있으면
tail = newNode;
newNode.setNext(newNode);
} else { // list에 노드가 있으면
newNode.setNext(tail.getNext()); // newNode.next = tail.next(첫노드)
tail.setNext(newNode); // tail.next는 새로운 노드를 가리킨다
tail = newNode; // newNode가 tail이 된다
}
}
// 삭제
public boolean deleteFront() { // list의 첫 노드 삭제
if (tail == null) { // list가 비어있으면
System.out.println(" No Data.");
return false;
} else { // list가 안 비어있으면
Node delNode = tail.getNext(); // 삭제할 노드(첫 노드)
if (delNode == tail) // 삭제할 노드가 마지막 노드일 때 (노드가 하나일 때)
tail = null;
else // 리스트에 2개 이상 노드가 있을 때
tail.setNext(tail.getNext().getNext());
return true;
}
}
}
728x90
'Computer Science (CS)' 카테고리의 다른 글
[Computer Science] 이진트리 (Binary Tree) (0) | 2021.06.28 |
---|---|
[Computer Science] 트리 (Tree) (0) | 2021.06.28 |
[Computer Science] 스택 (Stack) (0) | 2021.06.28 |
[Computer Science] 이중연결리스트 (0) | 2021.06.28 |
[Computer Science] 단순연결리스트 (0) | 2021.06.28 |
Comments