スポンサード リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサード リンク
-- : -- : -- | スポンサー広告 | page top↑
スポンサード リンク

Javaで学ぶデータ構造入門01-スタック(3/3)-さらなる操作の実装

これまでのエントリでスタックの実装してきました。スタックの基本的な操作であるPushとPopは既に実装済みでありますが、どうやらWikipediaによると、スタックに強く依存している環境では追加の操作を備えている場合があるとのことです。そこで、Wikipediaで例としてあげられている以下の4つの操作を実装してみました。

  • Duplicate
  • Peek
  • Swap
  • Rotate
	public void dup() {
		T tmp = pop();
		push(tmp);
		push(tmp);
	}
	
	public T peek() {
		return stack[sp-1];
	}
	
	public void swap() {
		T tmp1 = pop();
		T tmp2 = pop();
		push(tmp1);
		push(tmp2);
	}
	
	public void rot() {
		rot(3);
	}

	public void rot(int n) {
		T[] tmp = (T[]) new Object[n];
		for(int i=0; i<n; i++)
			tmp[i] = pop();
		push(tmp[0]);
		for(int i=n-1; i>0; i--)
			push(tmp[i]);		
	}
public void dup()

スタックのトップの要素を複製します。実装上はpop→push→pushすればよいです。

public T peek()

スタックのトップの要素を参照します(値を返します)。ただし、トップの要素を取り除かない点がpop()とは異なります。

public void swap()

スタックのトップとその下の要素を入れ替えます。

public void rot()

スタックの要素を回転します。下の画像のようなイメージになります。

回転操作rotateのイメージ図

n=3でrotateする処理系が多いようなので、引数無しのrot()はrot(3)を呼び出す仕様にしました。

public void rot(int n)

Wikipediaではトップのn個のアイテムを回転すると説明されていたため、一般的と思われるn=3には限定しない設計にしました。

Javaで学ぶデータ構造入門01-スタック

  1. Javaで学ぶデータ構造入門01-スタック(1/3)-基本操作の実装
  2. Javaで学ぶデータ構造入門01-スタック(2/3)-ジェネリクスの実装
  3. Javaで学ぶデータ構造入門01-スタック(3/3)-さらなる操作の実装(このエントリ)

スポンサード リンク

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

00 : 38 : 17 | プログラミング-Java | トラックバック(0) | コメント(1) | page top↑
<<Javaで学ぶデータ構造入門02-FIFOキュー(1/3)-配列による素朴な実装 | ホーム | 申し込みは本日(2/27)午後8時締め切り-基本情報技術者、初級シスアド>>
コメント
承認待ちコメント
このコメントは管理者の承認待ちです
by: * 2011/05/04 09:18 * [ 編集] | page top↑

コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://networkprogramming.blog18.fc2.com/tb.php/24-0fcdb6f0
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |

プロフィール

TBVector

Author:TBVector

プロフィール

メールフォーム

記事検索

Google

最近の記事

人気の記事

過去の記事

カテゴリー

タグランキング

リンク

最近のコメント

最近のトラックバック

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。