20210111 링크드리스트
일지
야심차게 이것 저것 찾아가며 야심하게 코딩했는데,
출력이 내 예상과 달랐다.뇌정지가 왔다.
어디서부터 잘못 된걸까, 내일 해야겠다. ^^
배경지식
- 링크드리스트 : 싱글, 더블, 서큘러
데이터를 저장한 각 노드의 앞뒤 주소가 담겨 있다.
- 자료구조란?
자료구조는 메모리를 효율적으로 사용하기 위한 목적이 가장 큽니다. RAM(Random Access memory)각각의 주소에 접근하는 속도가 같기 때문에, 찾고자하는 데이터의 주소를 알기만 한다면 굉장히 빠른 속도를 데이터를 가져올 수 있습니다. 이러한 RAM특징을 잘 이용하는 것이 중요핣니다.
데이터를 저장한 각 노드의 앞뒤 주소가 담겨 있다.
자료구조는 메모리를 효율적으로 사용하기 위한 목적이 가장 큽니다. RAM(Random Access memory)각각의 주소에 접근하는 속도가 같기 때문에, 찾고자하는 데이터의 주소를 알기만 한다면 굉장히 빠른 속도를 데이터를 가져올 수 있습니다. 이러한 RAM특징을 잘 이용하는 것이 중요핣니다.
학습 목표
영상 정보를 보관하는 데이터 구조를 선언하고, 데이터 인스턴스를 생성한다.
링크드 리스트 구조(Linked List)를 구현하기 위해서 데이터 구조에는 다음 영상 정보 레퍼런스를 참조할 수 있어야 한다.
Array 나 List 를 사용하지 않고 직접 데이터 구조만 사용해서 구현해야 한다.
영상 데이터 구조
영상 정보를 표현하는 데이터 구조는 다음과 같은 요구사항을 만족한다.
구현코드
import java.util.Random;
public class VideoData { // VideoData 라는 클래스 하나를 선언합니다.
String Id; // 고유한 id값
int SubjectNumber = 0; // SubjectNumber 안에 간단한 정수값 데이터를 선언합니다.
int[] OneToFifteen = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
int RunTime;
VideoData next = null; // 노드의 다음값을 null로 선언합니다.
VideoData(String name){// 값을 하나 받아서 생성자를 생성하나를 만듭니다.
this.Id= name ; //이 데이타에 넣어줍니다.
}
void AddVideo(String name) {// 값을 하나 받아서 생성자를 생성하
this.SubjectNumber++; // 제목은 +1
this.RunTime = new Random().nextInt(OneToFifteen.length); // 1~15중에 랜덤을 하나 뽑기
VideoData end = new VideoData(Id);
VideoData n = this;
while (n.next != null) {
n = n.next;
}
n.next = end;
System.out.println("제목" + this.SubjectNumber + "(" + this.Id + ")" + ":" + this.RunTime);
}
테스트
public class Main {
public static void main(String[] arg) {
VideoData Start = new VideoData("abcd");
Start.AddVideo("afbc");
Start.AddVideo("bdfa");
Start.AddVideo("afaf");
Start.AddVideo("abab");
Start.AddVideo("acac");
Start.AddVideo("bdbd");
Start.AddVideo("baaa");
Start.AddVideo("cafe");
Start.AddVideo("ccef");
Start.AddVideo("afcd");
Start.AddVideo("fabc");
Start.AddVideo("dcba");
}
}
출력
출력값
제목1(abcd):2
제목2(abcd):8
제목3(abcd):11
제목4(abcd):1
제목5(abcd):2
제목6(abcd):0
제목7(abcd):10
제목8(abcd):13
제목9(abcd):3
제목10(abcd):12
제목11(abcd):3
제목12(abcd):4
Author And Source
이 문제에 관하여(20210111 링크드리스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@marintelli/20210111
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import java.util.Random;
public class VideoData { // VideoData 라는 클래스 하나를 선언합니다.
String Id; // 고유한 id값
int SubjectNumber = 0; // SubjectNumber 안에 간단한 정수값 데이터를 선언합니다.
int[] OneToFifteen = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
int RunTime;
VideoData next = null; // 노드의 다음값을 null로 선언합니다.
VideoData(String name){// 값을 하나 받아서 생성자를 생성하나를 만듭니다.
this.Id= name ; //이 데이타에 넣어줍니다.
}
void AddVideo(String name) {// 값을 하나 받아서 생성자를 생성하
this.SubjectNumber++; // 제목은 +1
this.RunTime = new Random().nextInt(OneToFifteen.length); // 1~15중에 랜덤을 하나 뽑기
VideoData end = new VideoData(Id);
VideoData n = this;
while (n.next != null) {
n = n.next;
}
n.next = end;
System.out.println("제목" + this.SubjectNumber + "(" + this.Id + ")" + ":" + this.RunTime);
}
public class Main {
public static void main(String[] arg) {
VideoData Start = new VideoData("abcd");
Start.AddVideo("afbc");
Start.AddVideo("bdfa");
Start.AddVideo("afaf");
Start.AddVideo("abab");
Start.AddVideo("acac");
Start.AddVideo("bdbd");
Start.AddVideo("baaa");
Start.AddVideo("cafe");
Start.AddVideo("ccef");
Start.AddVideo("afcd");
Start.AddVideo("fabc");
Start.AddVideo("dcba");
}
}
출력
출력값
제목1(abcd):2
제목2(abcd):8
제목3(abcd):11
제목4(abcd):1
제목5(abcd):2
제목6(abcd):0
제목7(abcd):10
제목8(abcd):13
제목9(abcd):3
제목10(abcd):12
제목11(abcd):3
제목12(abcd):4
Author And Source
이 문제에 관하여(20210111 링크드리스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@marintelli/20210111
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
출력값
제목1(abcd):2
제목2(abcd):8
제목3(abcd):11
제목4(abcd):1
제목5(abcd):2
제목6(abcd):0
제목7(abcd):10
제목8(abcd):13
제목9(abcd):3
제목10(abcd):12
제목11(abcd):3
제목12(abcd):4
Author And Source
이 문제에 관하여(20210111 링크드리스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@marintelli/20210111저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)