• 締切済み

javaわかりません。。

双方向リストと循環双方向リストをjavaで書きたいんです。。。 一応実装するメソッドに現在のリストを後ろから表示するようにしたいです。。 データは数字を入れるだけでいいので、ソースコードを教えてください。

みんなの回答

  • kichiwave
  • ベストアンサー率41% (10/24)
回答No.1

同じような質問をしているようですが 課題かなにかでしょうか? 課題であれば、Webで聞くよりも上の方などに聞く形で 解決して行く方がいいように思います。 ただ単純に今までCでやってきたことをJAVAでやるには どうしたらいいのだろうかという疑問であれば JavaでArrayListクラスというのがありますが それを継承してやるというのはどうでしょう 最後から表示させるだけであればsizeをとって デクリメントすればいいだけで終わりますよ。 前後の位置取るメソッドを作りたければ indexOfで取った位置を-1してやれば前の要素ですし +1してやれば後の要素番号も取れますよ。 循環双方向リストは循環させる数値をプロパティにもてば それっぽい動きをするようにはできるのではないかと思います。

noname#93995
質問者

補足

独学でやっているので、上の人から教わるのはできないです。。 webで教えていただければ助かります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 見やすいソースって・・・

    こんにちは、tomokooです。 Javaで開発してるのですが、見やすいソースってどんなのだと思いますか? ・各メソッドの頭に、メソッドの説明や引数の記述がある ・数字定数がソースコード中にない ・if文はどんなに短くても“{}”でくくる ・・・・ 等、色々あると思うのですが。 人のソースを見たとき、見やすいな~。と思うことがあったら、どんなことでもいいので教えてください。 コーディング規約の原本を水曜までにまとめなくてはいけません。 よろしくお願いします!

    • ベストアンサー
    • Java
  • 関数とメソッドって違うものですか?(JAVA)

    現在0からJAVAを勉強していますが、関数とメソッドの違いがわかりません。 過去ログにC/C++カテゴリーで同様の質問がありましたが高度なんだか、言語が違うからなのかわかりませんでした。 関数とメソッドってどう区別できるのでしょうか? (”インスタンス.”の後ろには関数もメソッドも来ることができますよね?) (かっこも後ろについていますが、あれの意味もわかりません)

  • Javaのソースコードを教えてください!

    Javaのソースコードを教えて欲しいです コンソールに表示して3×3の○×ゲームを作ります 条件は ・メソッドを必ず使う ・〇‪✕‬ゲームをJavaのコンソール(println()やprint())を用いて作成 ・○×を書く場所は、数値を入力して対応した場所に〇や‪✕‬を出力 ・勝利判定などゲームができる所までは作成しない ・見た目なので、「この数値はここに書く というようなナビゲーション」、「実際に入力しした後の盤面」は実装するとこ ・9回入力したらゲーム終了 です

  • java教えてください。

    双方向リストをjavaで書きたいんですけどここまで書いて双方向リストになってるか不安になってきました。 これは双方向リストになっていますか? class MyListw{ int data; MyListw next = null; //次のノードへのポインタ MyListw prev = null; //前のノードへのポインタ MyListw(int data){ this.data = data; } void insertTail(MyListw node){ //リストの最後へ追加 MyListw tmp = this; while(tmp.next != null){ tmp = tmp.next; } tmp.next = node; node.prev = tmp.next; } void insertHead(MyListw node){ //リストの先頭へ追加 node.next = this.next; this.next = node; node.prev = this.next; } void insert(int head, MyListw node){ //リストの途中へ新規データを挿入 MyListw tmp = this; while(tmp != null){ if(tmp.data == head){ break; } tmp = tmp.next; } node.next = tmp.next; tmp.next = node; node.prev = tmp.next; } void delete(int here, MyListw node){ //リストからデータを1つ削除 MyListw tmp = this; while(tmp != null){ if(tmp.data == here){ break; } tmp = tmp.next; } node = tmp.next; tmp.next.prev = node; tmp.next = node.next; node.next.prev = tmp.next; node.next = null; node.prev = null; } void deleteHead(){ //先頭のノードを削除 MyListw tmp = next; this.next = tmp.next; tmp.next.prev = this.next; tmp.next = null; tmp.prev = null; } void deleteTail(){ //最後のノードを削除 MyListw tmp = this; MyListw lastList = null; while(tmp.next != null){ lastList = tmp; tmp = tmp.next; } lastList.next = null; lastList.prev = null; } void show(){ MyListw tmp = next; while(true){ System.out.print(tmp.data); if(tmp.next == null) break; tmp = tmp.next; } System.out.println(""); } void showTail(){ } } class MyListwApp{ public static void main(String[] args){ MyListw list = new MyListw(0); //初期ダミー System.out.println("最後に追加"); list.insertTail(new MyListw(1)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.insertTail(new MyListw(5)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("先頭に追加"); list.insertHead(new MyListw(8)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.insertHead(new MyListw(9)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("途中からデータを追加"); list.insert(1, new MyListw(2)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.insert(2, new MyListw(3)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("リストからデータを削除"); list.delete(8, new MyListw(1)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("先頭のノードを削除"); list.deleteHead(); //先頭のノードを削除 list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.deleteHead(); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("最後のノードを削除"); list.deleteTail(); //最後のノードを削除 list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.deleteTail(); list.show(); System.out.println("逆順に表示"); list.showTail(); } }

    • ベストアンサー
    • Java
  • 【Java】モーダルDLG内でリストを表示

    Javaを学習し始めて間もない初心者です。よろしくお願いします。 ======================================== 開発環境:Eclipse SDK(Version: 3.5.0) 開発言語:Java ======================================== にて、プログラムを作成しています。 メインDLGの中に配置したボタンを押下したタイミングで、 モーダルDLGを開き、そのDLG内にリストを表示させたいのですが、 参考サイトなどを見ながら、とりあえずモーダルDLGは表示されましたが、 リストが表示されません。 下記に作成ソースを記載しますので、解決法をご存知の方おられましたら、 どこが悪く、どう修正すれば良いかについて、ご教示お願い致します。 なお、当方学習中の身ですので、より良いコードを書くために、 その他の指摘などももしあれば幸いです。 【ソースコード】 import javax.swing.*; import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.Frame; import java.awt.event.*; import java.awt.*; public class TestList extends JFrame implements ActionListener{ Dialog dlg; Frame frm; public static void main(String[] args){ TestList frame = new TestList(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 400, 100); frame.setTitle("リスト表示"); frame.setVisible(true); } TestList(){ { // リスト表示ボタンを追加 JButton btn = new JButton("リストDLGを表示"); btn.addActionListener(this); JPanel p2 = new JPanel(); p2.add(btn); getContentPane().add(p2, BorderLayout.CENTER); } } // ボタン押下イベントを取得する関数 public void actionPerformed(ActionEvent e){ // リスト表示ボタンが押下された時 if (frm == null) { frm = new Frame("リスト"); frm.setSize(200 , 200); frm.setVisible(true); String list_n[] = {"テスト1", "テスト2", "テスト3", "テスト4", "テスト5"}; JList list = new JList(list_n); dlg = new Dialog(frm, "リスト" , true); JScrollPane sp = new JScrollPane(); sp.getViewport().setView(list); sp.setPreferredSize(new Dimension(200, 80)); JPanel p = new JPanel(); p.add(sp); dlg.add(p, BorderLayout.CENTER); } } }

    • ベストアンサー
    • Java
  • Javaのプログラムについての質問です。

    Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。 注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。 以下は極最初期のソースになります。 import java.util.List;  public interface Interface{   int size();   boolean add();   boolean remove();   void clear();   get();   set();  } public class LocalList implements Interface{ class Main implements LocalList {  public static void main(String[] args) {     } } Listインターフェースについてネットで調べてはいるのですが、具体的な解決方法が見えてきません。 どなたか参考ソースや考え方などを教えていただけないでしょうか。よろしくお願い致します。

  • Java : インターフェースについて

    List<String> list = new LinkedList<String>(); という宣言がありますが、これは本当に意味があるのでしょうか? 「呼び出し側が LinkedList の実装コードを意識せずにメソッドを呼び出すことができ、呼び出し側コードの再利用性と抽象性を高めることができる」 ということが考えとしてあるのかもしれませんが、この正当性がイマイチ理解できません。少なくとも、呼び出し側のコードも、ある程度は LinkedList か ArrayList かは考慮した上でのコードディングをしていないでしょうか(ランダムアクセスしやすいうんぬん)。List で宣言されていることにどれだけの意味があるのでしょうか? また、実際問題、list のメソッド使った際 Eclipse のコードジャンプで LinkedList の実装コードが一発で見れないため、どのような実装になっているのか調べたいときにすぐに確認できないというのも個人的には問題に感じます。 この宣言に本当に意味はありますか?本当に抽象化できていますか? 詳しい方よろしくお願いいたします。

  • java.util.Listのヒープサイズの取得

    オブジェクトのサイズを取得するメソッドとして、  java.lang.instrument.Instrumentation#getObjectSize があることは教わったのですが、なんと、このメソッドは参照先オブジェクトの サイズを調べてくれません。 ですから、私の環境では、Listに何のオブジェクトをaddしても、しなくても 24 が返ってくるだけでした。 どなたか、List内のオブジェクトの合計のヒープサイズを求めるライブラリもしくは、 リフレクションとInstrumentation#getObjectSizeを使った合計のヒープサイズを調べる 具体的な実装例をご存知の方はおられませんでしょうか? ( 前の質問は全く無関係な方向に進んでしまっていますので、   しばらく放置させていただきます。ご了承ください。)

  • ソースコードをeclipseで表示

    eclipseでjavaのソースコードを表示するには どうすればよいのでしょうか? (Listなどのクラスの中身を表示) eclipse3.1 jdk1.5.0です よろしくお願い致します。

  • ソースの実行の順番

    現在sjc-pの勉強を行っています。 JAVAがはじめてなので、以下の点でつまずいています。 すみませんが、アドバイスをお願いします。 以下のソースコードはどのような順番で処理されているのでしょうか? mainメソッドの実行の後は、newによってデフォルトコントラクタが呼び出された後、out.method()が呼ばれると思うのですが、これはどこを指しているのでしょうか? 基礎的な事で申し訳ないのですが、実行順番を下のソースコードを使用して解説して頂ければ助かります。 また、classに付与できるアクセス修飾子などが色々な状況において変化するので、理解できません。わかりやすい表になっているサイトなどはないでしょうか? よろしくお願いします。 class outerclass{ public void method(){ final int data1 = 100; final int data2 = 20; class innerclass{ void in_method(){ System.out.println(data1); System.out.println(data2); } } innerclass in = new innerclass(); in.in_method(); } } class test{ public static void main(String[] args){ outerclass out =new outerclass(); out.method(); } }

    • ベストアンサー
    • Java