코드 사본은 다음과 같습니다.
/**
* 일원 링크 목록
*
*/
공개 클래스 노드리스트 <e> {
개인 정적 클래스 노드 <e> {// 노드 클래스
E 데이터; // 노드
Node <e> 다음; 다음 노드를 가리 킵니다
노드 (e e) {
this.data = e;
this.next = null;
}
}
개인 노드 <e> 헤드; // 링크 된 목록의 헤더 노드
개인 노드 <e> 마지막; // 링크 된 목록의 꼬리 노드
개인 노드 <e> 기타 = null;
개인 int 길이 = 0; // 노드 수
/**
* 비 매개 변수 구성 방법
*/
공개 노드리스트 () {
// 기본 노드가 비어 있습니다
this.head = new Node <e> (null);
}
/**
* 초기화 중에 노드를 만듭니다
*
* @param 데이터
* 데이터
*/
공개 노드리스트 (E 데이터) {
this.head = new Node <e> (데이터);
this.last = 머리;
길이 ++;
}
/**
* 노드 추가 (테일 삽입 방법)
*
* @param 데이터
* 데이터
*/
public void add (e data) {
if (isempty ()) {
head = new Node <e> (데이터);
마지막 = 머리;
길이 ++;
} 또 다른 {
노드 <e> newnode = new Node <e> (데이터);
last.next = newnode;
마지막 = 뉴 노드;
}
}
/**
* 인덱스에서 데이터를 가져옵니다 (색인 입력 오류는 바운드 외 예외를 던집니다)
* @Param 인덱스 인덱스
* @index에서 @return 데이터
*/
public e get (int index) {
if (index <0 || index> length) {
새로운 indexOutOfBoundSexection을 던지십시오 ( "index :"+index);
}
기타 = 머리;
for (int i = 0; i <index; i ++) {
기타 = 기타 .next;
}
다른 반환 .data;
}
/**
* 새 값은 오래된 값을 대체합니다
* @return 성공은 사실이며 거짓으로 발견되지 않았습니다
*/
공개 부울 세트 (E OldValue, e NewValue) {
기타 = 머리;
while (기타! = null) {
if (Other.data.equals (OldValue)) {
기타 .Data = NewValue;
진실을 반환하십시오.
}
기타 = 기타 .next;
}
거짓을 반환합니다.
}
/**
* 요소를 지정한 후 요소를 삽입하십시오
*
* @param 데이터
* 지정된 요소
* @param insertData
* 삽입 해야하는 요소
* @return false는 요소를 찾을 수없고, True는 삽입 성공입니다.
*/
public boolean add (e data, e insertData) {
기타 = 머리;
while (기타! = null) {
if (Other.data.equals (data)) {
노드 <e> newnode = new Node <e> (insertData);
노드 <e> temp = 기타 .next;
newnode.next = temp;
기타 .next = newnode;
길이 ++;
진실을 반환하십시오.
}
기타 = 기타 .next;
}
거짓을 반환합니다.
}
/**
*이 요소가 링크 된 목록에 포함되어 있는지 여부
* @return은 거짓이 아닌 참으로 포함되었습니다
*/
공개 부울은 (e data) {
기타 = 머리;
while (기타! = null) {
if (Other.data.equals (data)) {
진실을 반환하십시오.
}
기타 = 기타 .next;
}
거짓을 반환합니다.
}
/**
* 지정된 요소를 제거합니다
* 제거 해야하는 @Param 데이터 요소
* @return은 존재하지 않으며 성공을 위해 참입니다.
*/
공개 부울 제거 (E 데이터) {
기타 = 머리;
Node <e> temp = head; // 임시 변수, 이전 노드를 저장하는 데 사용됩니다.
while (기타! = null) {
if (Other.data.equals (data)) {
temp.next = 기타 .next;
길이--;
진실을 반환하십시오.
}
온도 = 기타;
기타 = 기타 .next;
}
거짓을 반환합니다.
}
/**
* 링크 된 목록이 비어 있는지 확인하십시오
*
* @return empty는 사실이며, 비어 있지 않은 것은 거짓입니다
*/
공개 부울 isempty () {
반환 길이 == 0;
}
/**
* 링크 목록을 지 웁니다
*/
public void clear () {
this.head = null;
this.length = 0;
}
/**
* 모든 노드를 출력합니다
*/
public void printlink () {
if (isempty ()) {
System.out.println ( "빈 링크 목록");
}또 다른{
기타 = 머리;
while (기타! = null) {
System.out.print (Other.data);
기타 = 기타 .next;
}
System.out.println ();
}
}
}