(데이터 구조) 자바 기본 링크 01 실현
31499 단어 데이터 구조
##
public interface IList {
public boolean isEmpty();
public void clear();
public int length();
public void display();
public Object value(int i);
public int indexOf(Object x);
public void remove(int i) throws Exception;
public void insert(int i,Object x) throws Exception;
}
위 에서 아래로 링크 가 비어 있 는 지 여 부 를 판단 하 는 링크 링크 링크 길이 표시 출력 에 해당 하 는 색인 값 을 가 져 와 해당 하 는 값 색인 을 가 져 와 특정한 노드 삽입 노드 를 제거 합 니 다.
다음은 해당 노드 를 쓰 는 거 예요.
## 。
public class Node {
private Object data;
private Node next;
public Node() {
this(null,null);
}
public Node(Object data) {
this(data,null);
}
public Node(Object data,Node next) {
this.data=data;
this.next=next;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
링크 클래스 구현
##
먼저 하나의 계승 인터페이스 가 기능 을 실현 하 는 것 을 써 야 한다. 그리고 세 는 노드 류 를 사용 해 야 한다.그럼 조작 한 데 이 터 는 어떻게?
##public class LinkList implements IList
private Node head;
구조 방법 은 두 가지 가 있 는데 하 나 는 무 삼 구조 이 고 하 나 는 삼 구조 이다.파 라 메 트릭 구 조 는 두 가지 가 있 습 니 다. 1: 당신 이 만 든 링크 구 조 는 당신 이 입력 한 순서 와 같은 출력 입 니 다. 처음부터 끝까지 2: 당신 이 만 든 링크 구 조 는 당신 이 입력 한 순서 와 다른 출력 입 니 다. 끝 에서 끝까지.
public LinkList() {
head=new Node();
}
public LinkList(int n,boolean order) {
this();
if(order)
{
try {
create1(n); //
} catch (Exception e) {
e.printStackTrace();
}
}else {
try {
create2(n); //
} catch (Exception e) {
e.printStackTrace();
}
}
}
## 。
@Override
public void clear() {
head.setNext(null);
head.setData(null);
}
@Override
public boolean isEmpty() {
return head.getNext()==null;
}
@Override
public int length() {
Node p=head.getNext(); //1 l=1 2 l=2
int length=0;
while(p!=null) {
p=p.getNext();
length++;
}
return length;
}
@Override
public void display() { //
if(!isEmpty()) {
Node p=head.getNext();
while(p!=null) {
System.out.print(p.getData()+" ");
p=p.getNext();
}
System.out.println();
}else
System.out.println(" ");
}
이 네 개 는 상당히 간단 하 다.그러나 한 칸 의 헤드 를 비 우 는 데 이 터 는 헤드 없 는 링크 에서 작 동 되 며 데 이 터 를 비 우지 않 아 도 됩 니 다.여 기 는 머리 가 있 는 체인 시계 입 니 다.
@Override
public Object value(int i) { // 1 2 3 4
Node p=head.getNext();
int j=0; // p j
while(p!=null&&j<i) { // i
p=p.getNext(); // p=null j=i p
j++;// j
}
if(p==null||j>i)// p==null j>i
{
System.out.println(" ");
}
return p.getData();
}
## 0 , 。
@Override
public int indexOf(Object x) {
Node p=head.getNext(); // 0 1 2 3 4 5 6
int j=0; // // p p p p p p p
while(p!=null&&!p.getData().equals(x)) { // 1 2 3 4 5 6
p=p.getNext(); //
j++;
}
if(p!=null)
return j;
else
return -1;
}
여 기 는 색인 을 구 하 는 위의 그림 입 니 다.
@Override
public void remove(int i) throws Exception {
Node p=head.getNext();
int j=0;
while(p!=null&&j<i-1) {
p=p.getNext();
j++;
}
if(p==null||j>i-1)
throw new Exception(" ");
p.setNext(p.getNext().getNext());
}
낡은 곡 조 를 다시 연주 하 니, 위치 만 잡 을 줄 알 면 자전 거 를 타지 않 아 도 된다.
@Override
public void insert(int i,Object x) throws Exception {
Node p=head;
int j=-1;// 0 -1
while(p!=null&&j<i-1) { // 0 -1 1
p=p.getNext(); //
j++; // i
}
if(p==null||j>i-1)
{
throw new Exception(" ");
}
Node s=new Node(x); //
s.setNext(p.getNext());
p.setNext(s);
}
\# # 다음은 꼬리 삽입 법 과 머리 삽입 법 입 니 다.
public void create1(int n) throws Exception {
Scanner sc=new Scanner(System.in);
for(int i=0;i<n;i++) {
System.out.println(" "+(i+1)+" ");
insert(length(),sc.next());
}
}
public void create2(int n) throws Exception {
Scanner sc=new Scanner(System.in);
for(int i=0;i<n;i++) {
System.out.println(" "+(i+1)+" ");
insert(0,sc.next());
}
}
싫 을 정도 로 간단 하 다.하지만 이것 은 앞장 서 는 부분 을 겨냥 한 것 이 니 주의 하 세 요.앞장 서지 못 한 다음 에.
## , 。。。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.