데이터 구조: 양 방향 링크 의 삭제 와 검사 사고 와 코드 실현
public class DoubleLinkedList {
private User2 head = new User2(0, "");
public User2 getHead() {
return head;
}
/**
* :
* 1. 。
* 2. next
* 3. pre temp
*/
public void add(User2 user) {
// head ,
User2 temp = head;
// 。
while (true) {
//
if (temp.next == null) {
break;
}
// , temp
temp = temp.next;
}
//
temp.next = user;
// temp
user.pre = temp;
}
/**
* :
* 1. ID 。 temp.id == .id
* 2. temp.name = .name;
*/
// 。 ID 。
public void update(User2 newUser) {
//
if (head.next == null) {
System.out.println(" 。 ");
return;
}
// , ID
// 。
User2 temp = head.next;
while (true) {
if (temp == null) {
break;
}
//
if (temp.id == newUser.id) {
temp.name = newUser.name;
return;
}
//temp
temp = temp.next;
}
System.out.printf(" ID %d , ", newUser.id);
}
/**
* :( ID )
* 1. temp
* 2.temp next temp
* 3.temp pre temp
* 4. , , 。
*/
public void delete(int id) {
//
if (head.next == null) {
System.out.println(" ");
return;
}
// 。
User2 temp = head.next;
while (true) {
//
if (temp == null) {
break;
}
//
if (temp.id == id) {
//temp next temp
temp.pre.next = temp.next;
//temp pre temp
// 。 。
if (temp.next!=null){
temp.next.pre = temp.pre;
}
return;
}
//temp
temp = temp.next;
}
System.out.printf(" %d ", id);
}
/**
* ID :
* 1. ,
* 2. .next temp.next
* 3. temp.next.pro 。
* 4. .pre temp
* 5. temp.next 。
*/
public void addByOrder(User2 user) {
// 。 。
// temp 。 。
User2 temp = head;
while (true) {
// null 。 。
if (temp.next == null) {
break;
}
// ID ID , ( 。)
if (temp.next.id > user.id) {
break;
} else if (temp.next.id == user.id) {
// 。
System.out.printf(" %d 。 。", user.id);
return;
}
temp = temp.next;
}
//. .next temp.next
user.next = temp.next;
if (temp.next!=null) temp.next.pre = user;
user.pre = temp;
temp.next = user;
// temp.next 。
}
//
public void showList() {
//
if (head.next == null) {
System.out.println(" ");
return;
}
// 。 。
User2 temp = head.next;
while (true) {
//
if (temp == null) {
break;
}
//
System.out.println(temp);
//temp
temp = temp.next;
}
}
}
class User2 {
public int id;
public String name;
public User2 next;
public User2 pre;
public User2(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "User2{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
class DoubleLinkedListDemo{
public static void main(String[] args) {
User2 user = new User2(1, " ");
User2 user1 = new User2(2, " ");
User2 user2 = new User2(3, " ");
User2 user3 = new User2(4, " ");
DoubleLinkedList list = new DoubleLinkedList();
list.add(user);
list.add(user1);
list.add(user2);
list.add(user3);
list.showList();
//
User2 newUser = new User2(1, " ");
list.update(newUser);
System.out.println(" ");
list.showList();
//
list.delete(3);
System.out.println(" ");
list.showList();
DoubleLinkedList list2 = new DoubleLinkedList();
list2.addByOrder(user3);
list2.addByOrder(user1);
list2.addByOrder(user2);
list2.addByOrder(user);
list2.showList();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.