ホームページ > Java > &#&チュートリアル > Javaの循環リンクリスト

Javaの循環リンクリスト

WBOY
リリース: 2024-08-30 15:10:16
オリジナル
771 人が閲覧しました

循環リンク リストは、リンク リストと比較すると若干の違いがあります。循環リンク リストでは、最後のノードが最初のノードを指し、ノードの完全な円が完成します。言い換えれば、このリンクされたリストでは、最後の要素は null ではないとも言えます。このタイプのリンク リストでは、どのノードも開始点として機能できます。これは、どのノードから開始しても完全なリストを横断できることを意味します。最後のノードが最初のノードを指すため、循環リンク リストではエンキューおよびデキュー操作を非常に簡単に実行できます。この記事では、例を挙げて循環リンク リストを理解します。このトピックでは、Java の循環リンク リストについて学習します。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java の循環リンク リストの構文:

以下の構文:

  • ノードクラス定義構文 –
public class Course{
float marksscored;
Course comingup;
public Course(float marksscored) {
this.marksscored = marksscored;
}
}
ログイン後にコピー
  • 循環リストコンポーネントの作成構文 –
public Course evaluated = null;
public Course notevaluated = null;
ログイン後にコピー
  • 循環リスト構文に循環リスト コンポーネントを追加する –
public void continued(float marksscored){
Course newCourse = new Course(marksscored);
if(evaluated == null) {
evaluated = newCourse;
notevaluated = newCourse;
newCourse.comingup = evaluated;
}
else {
notevaluated.comingup = newCourse;
notevaluated = newCourse;
notevaluated.comingup = evaluated;
}
}
ログイン後にコピー
  • 循環リストコンポーネント構文の表示 –
public void show() {
Course current = evaluated;
if(evaluated == null) {
System.out.println("Results are underevaluation");
}
else {
System.out.println("The Marks Scored are as follows: ");
do{
System.out.print(" \n"+ current.marksscored);
current = current.comingup;
}while(current != evaluated);
System.out.println();
}
}
public static void main(String[] args) {
EDUCBA marks = new EDUCBA();
marks.continued(100);
marks.continued(230);
marks.continued(349);
marks.continued(423);
marks.show();
}
}
ログイン後にコピー

Java での循環リンクリストの仕組み

前に読んだように、循環リンク リストは、最後のノードが最初のノードを指すノードのコレクションを持つリストにすぎません。以下の図はこれを説明しています。ここで、ノード 1 はヘッド ノード、ノード 4 は最後のノードです。したがって、ここでは、ノード 1 がノード 2 を指し、次にノード 2 がノード 3 を指し、ノード 3 がノード 4 を指し、最後にノード 4 がノード 1 を指すことがわかります。

Javaの循環リンクリスト

  • まず、特定のリスト内のノードとなるノード クラスを定義する必要があります。これには、次のノードを指す 2 つのプロパティ データと next が含まれます。
  • 別のクラスを定義する必要があります。これは 2 つのノードを持つ循環リンク リストを作成します。1 つのノードは先頭、もう 1 つは末尾になります。そこには add() と display() という 2 つのメソッドがあります。
  • add() メソッドはノードをリストに追加します。まず、このメソッドはヘッドが null かどうかを確認し、その後ノードがヘッドとして挿入されます。
  • これで、頭と尾の両方が新しく追加されたノードを指すようになります。
  • ヘッドが null でない場合、新しいノードは新しいテールとして機能し、このリストは循環リンク リストであるため、そのテールはヘッドの方向を指します。

Java の循環リンク リストの例

Java での循環リンク リストの例を以下に示します。

例 #1

以下の例では、文字列ベースの循環リストが表示されます。まず、ノード クラス Course を定義しました。次に、循環リンク リストを作成する別のクラスを定義し、このクラスが循環リンク リストに追加されて表示されます。

public class EDUCBA {
public class Course{
float marksscored;
Course comingup;
public Course(float marksscored) {
this.marksscored = marksscored;
}
}
public void continued(float marksscored){
Course newCourse = new Course(marksscored);
if(evaluated == null) {
evaluated = newCourse;
notevaluated = newCourse;
newCourse.comingup = evaluated;
}
else {
notevaluated.comingup = newCourse;
notevaluated = newCourse;
notevaluated.comingup = evaluated;
}
}
public Course evaluated = null;
public Course notevaluated = null;
public void show() {
Course current = evaluated;
if(evaluated == null) {
System.out.println("Results are underevaluation");
}
else {
System.out.println("The Marks Scored are as follows: ");
do{
System.out.print(" \n"+ current.marksscored);
current = current.comingup;
}while(current != evaluated);
System.out.println();
}
}
public static void main(String[] args) {
EDUCBA marks = new EDUCBA();
marks.continued(100);
marks.continued(230);
marks.continued(349);
marks.continued(423);
marks.show();
}
}
ログイン後にコピー

出力:

Javaの循環リンクリスト

例 #2

以下の例では、文字列ベースの循環リストが表示されます。まず、ノード クラス Coursename を定義しました。次に、循環リンク リストを作成する別のクラスを定義し、このクラスが循環リンク リストに追加されて表示されます。

public class EDUCBA {
public class Coursename{
String name;
Coursename comingup;
public Coursename(String name) {
this.name = name;
}
}
public void continued(String name){
Coursename newCoursename = new Coursename(name);
if(evaluated == null) {
evaluated = newCoursename;
notevaluated = newCoursename;
newCoursename.comingup = evaluated;
}
else {
notevaluated.comingup = newCoursename;
notevaluated = newCoursename;
notevaluated.comingup = evaluated;
}
}
public Coursename evaluated = null;
public Coursename notevaluated = null;
public void show() {
Coursename current = evaluated;
if(evaluated == null) {
System.out.println("No desired course found");
}
else {
System.out.println("The requested courses are as follow: ");
do{
System.out.print(" \n"+ current.name);
current = current.comingup;
}while(current != evaluated);
System.out.println();
}
}
public static void main(String[] args) {
EDUCBA names = new EDUCBA();
names.continued("Course 1: Data Science");
names.continued("Course 2: Finance");
names.continued("Course 3: React Native");
names.continued("Course 4: React");
names.continued("Course 5: Excel");
names.continued("Course 6: Java");
names.continued("Course 7: Lua");
names.continued("Course 8: TypeScript");
names.continued("For more Information");
names.continued("Feel free to visit us on www.EDUCBA.com");
names.show();
}
}
ログイン後にコピー

出力:

Javaの循環リンクリスト

結論

この記事に基づいて、Java の循環リンク リストの概念と、それがリンク リストとどのように異なるかを理解しました。循環リンク リストの仕組みとその実証例についても説明しました。この例は、初心者が循環リンク リストの概念を簡単に理解するのに役立ちます。

以上がJavaの循環リンクリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート