티스토리 뷰
public class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
next = null;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
import java.util.Scanner;
public class LinkedList {
Node head;
boolean find(int data)
{
Node current = head;
while(current != null)
{
if(current.data == data) {
return true;
}
current = current.next;
}
return false;
}
void insert(int data)
{
Node newnode = new Node(data);
Node pre = head;
Node current = head;
if(head == null)
head = newnode;
else
{
while(current != null && current.data < data)
{
pre = current;
current = current.next;
}
if(pre == head && current == head) //연결리스트에 맨 앞에 새로운 노드를 삽입해야 하는 경우
{
newnode.next = head;
head = newnode;
}
else if(current==null) //맨 마지막에 삽입 해야 한다면
pre.next = newnode; //노드를 연결리스트의 맨 뒤에 삽입한다.
else
{
pre.next = newnode;
newnode.next = current;
}
}
}
void delete(int data)
{
if(!find(data))
{
System.out.println(data+"이 연결리스트 안에 없기 때문에 삭제 할 수 없습니다.");
return;
}
else
{
Node pre = null;
Node current = head;
while(current != null && current.data != data)
{
pre = current;
current= current.next;
}
if(pre == null) //삭제하려는게 연결리스트의 맨 앞인 경우
{
head = head.next;
}
else if(current == null) //삭제 하려는게 연결리스트의 맨 뒤인 경우
{
pre = null;
}
else //중간에 있는 노드를 삭제하려고 하는 경우
{
pre.next = current.next;
current.next = null;
}
System.out.println(data + "를 성공적으로 삭제했습니다.");
}
}
void display()
{
Node current = head;
while(current != null)
{
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
public static void main(String args[]) {
LinkedList list = new LinkedList();
while(true)
{
System.out.println("1.탐색 2.삽입 3.삭제 4.출력 5.종료 중 숫자를 하나 입력해주세요");
Scanner sc = new Scanner(System.in);
int value = sc.nextInt();
if(value == 5) return;
switch(value)
{
case 1:
System.out.print("찾으려는 값을 입력해주세요 ");
Scanner b = new Scanner(System.in);
int findvalue = b.nextInt();
boolean bool = list.find(findvalue);
if(bool) System.out.println(findvalue+"이 연결리스트 안에 있습니다.");
else System.out.println(findvalue+"이 연결리스트 안에 없습니다.");
break;
case 2:
System.out.print("무엇을 삽입 하시겠습니까? ");
Scanner a = new Scanner(System.in);
list.insert(a.nextInt());
break;
case 3:
System.out.print("무엇을 삭제 하시겠습니까? ");
Scanner c = new Scanner(System.in);
int deletevalue = c.nextInt();
list.delete(deletevalue);
break;
case 4:
System.out.println("모든 데이터를 출력하겠습니다.");
list.display();
break;
default:
break;
}
}
}
}
'자료구조' 카테고리의 다른 글
선택정렬 구현 연습 (0) | 2018.08.09 |
---|---|
퀵소트 구현 연습 (0) | 2018.08.09 |
배열로 구현한 큐 (자바코드) (0) | 2017.09.13 |
[자료구조/선형자료구조](직선)큐와 원형큐 (1) | 2017.08.27 |
[자료구조/선형자료구조]링크드리스트(연결리스트),스택 (0) | 2017.08.27 |
- Total
- Today
- Yesterday
- es6
- await
- state
- mobx
- async
- Action
- return type
- react
- computed
- promise
- useRef
- design system
- props
- hydrate
- reducer
- Polyfill
- webpack
- useEffect
- Babel
- reactdom
- reflow
- react hooks
- server side rendering
- javascript
- atomic design
- storybook
- typescript
- Next.js
- rendering scope
- type alias
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |