Javaはシングルチェーン表の反転操作を実現します。
1694 ワード
シングルチェーンテーブルは、共通のデータ構造であり、各ノードは、ポインタで接続されています。一つはデータドメインであり、ノードデータを記憶するために構成されています。第二は、ポインタドメインであり、次のノードのアドレスを格納するために使用される。Javaでは以下のように定義されています。
まず考えを言います。シングルチェーンテーブルとは、各ノードのポインタ領域をもとのノードから次のノードに向けて指し示すことです。しかし、シングルチェーンテーブルは前のノードのポインタ領域を指していないので、前のノードに向けられたポインタpreを追加して、各ノードの前のノードを記憶する必要がある。また、現在のノードを保存するポインタcurと、次のノードのnextを定義する必要があります。この3つのポインタを定義した後、シングルチェーンテーブルを巡回して、現在のノードのポインタ領域を前のノードに向けて、その後、3つのポインタを定義して後ろに移動します。最後のノードが停止するまで。
OK、考えを言い終わったら、直接コードをかけます。
public class Node {
private Object data;//
private Node next;//
public Node(Object data){
this.data = data;
}
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;
}
}
シングルチェーン表の反転操作はjava開発の試験問題です。私は面接の時にこの問題でqaqを虐待されたことがあります。まず考えを言います。シングルチェーンテーブルとは、各ノードのポインタ領域をもとのノードから次のノードに向けて指し示すことです。しかし、シングルチェーンテーブルは前のノードのポインタ領域を指していないので、前のノードに向けられたポインタpreを追加して、各ノードの前のノードを記憶する必要がある。また、現在のノードを保存するポインタcurと、次のノードのnextを定義する必要があります。この3つのポインタを定義した後、シングルチェーンテーブルを巡回して、現在のノードのポインタ領域を前のノードに向けて、その後、3つのポインタを定義して後ろに移動します。最後のノードが停止するまで。
OK、考えを言い終わったら、直接コードをかけます。
public static Node reverseListNode(Node head){
// ,
if (head == null || head.getNext() == null){
return head;
}
//
Node preNode = null;
//
Node curNode = head;
//
Node nextNode = null;
while (curNode != null){
nextNode = curNode.getNext();//nextNode
curNode.setNext(preNode);// next
preNode = curNode;//preNode
curNode = nextNode;//curNode
}
return preNode;
}