Skip to content

Instantly share code, notes, and snippets.

@Bambina-zz
Bambina-zz / SetOfStacksTest.java
Created April 16, 2017 07:21
3.3 【発展問題】任意の部分スタックからpopする関数popAt(int index)を実装してください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class SetOfStacksTest {
@Test
public void testBasicPushAndPop(){
SetOfStacks set = new SetOfStacks();
set.push(1);
set.push(2);
@Bambina-zz
Bambina-zz / SetOfStacksTest.java
Created April 16, 2017 03:02
3.3 皿が積み上がっている状況をイメージしてください。もし、高く積み上がり過ぎたら倒れてしまうでしょう。ですから、実生活ではスタックがある領域を超えたとき、新しいスタックを用意することになるでしょう。これをまねたデータ構造SetOfStacksを実装してください。SetOfStacksはいくつかのスタックを持ち、スタックのデータが一杯になったらスタックを新たに作らなければなりません。また、SetOfStacks.push()とSetOfStacks.pop()は普通のスタックのように振る舞うようにしてください。(つまり、pop()は通常の1つのスタックの場合と同じ値を返さなければなりません)。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class SetOfStacksTest {
@Test
public void testSetOfStacks(){
SetOfStacks set = new SetOfStacks();
set.push(1);
set.push(2);
@Bambina-zz
Bambina-zz / StackTest.java
Last active April 20, 2017 14:19
3.2 pushとpopに加えて、最小の要素を返す関数minを持つスタックをどのようにデザインしますか?ただしpush、pop、min関数はすべてO(1)の実行時間になるようにしてください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class StackTest {
@Test
public void testStack(){
Stack s = new Stack();
s.push(1);
s.push(2);
@Bambina-zz
Bambina-zz / TestAdjustableStacks.java
Created March 24, 2017 03:11
【解答2】3.1 1つの配列を使って3つのスタックを実装するにはどのようにすればよいのか述べてください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class TestAdjustableStacks {
@Test
public void testAdjustableStacks(){
AdjustableStack stack = new AdjustableStack();
try {
stack.push(0, 10);
@Bambina-zz
Bambina-zz / TestFixedStacks.java
Created March 21, 2017 08:55
【解答1】3.1 1つの配列を使って3つのスタックを実装するにはどのようにすればよいのか述べてください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class TestFixedStacks {
@Test
public void testFixedStacks(){
FixedStacks stack = new FixedStacks();
try {
stack.push(0, 0);
@Bambina-zz
Bambina-zz / TestQueue.java
Created March 21, 2017 03:21
Queueの実装
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
// First In First Out
public class TestQueue {
@Test
public void testQueue(){
Queue<String> q = new Queue<String>();
q.enqueue("0");
@Bambina-zz
Bambina-zz / TestStack.java
Created March 21, 2017 03:20
Stackの実装
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
// Last In First Out
public class TestStack {
@Test
public void testStack(){
Stack<Integer> stack = new Stack<Integer>();
stack.push(1);
@Bambina-zz
Bambina-zz / TestLinkedList.java
Created March 21, 2017 01:47
【解答2】2.7 連結リストが回文(先頭から巡回しても末尾から巡回しても、各ノードの要素がまったく同じになっている)かどうかを調べる関数を実装してください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class TestLinkedList {
@Test
public void testPalindromeDetector(){
LinkedList<Integer> list = new LinkedList<Integer>();
list.addFirst(1);
list.addFirst(2);
@Bambina-zz
Bambina-zz / TestLinkedList.java
Created March 20, 2017 09:45
【解答1】2.7 連結リストが回文(先頭から巡回しても末尾から巡回しても、各ノードの要素がまったく同じになっている)かどうかを調べる関数を実装してください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
public class TestLinkedList {
@Test
public void testPalindromeDetector(){
LinkedList<Integer> list = new LinkedList<Integer>();
list.addFirst(1);
list.addFirst(2);
@Bambina-zz
Bambina-zz / TestLinkedList.java
Created March 20, 2017 08:13
【解答】2.6 循環する連結リストが与えられたとき、循環する最初のノードを返すアルゴリズムを実装してください。
import java.util.*;
import org.junit.*;
import static org.junit.Assert.*;
// 定義
// 循環を含む連結リスト: 連結リストAではループを作るために、リスト内のノードの次へのポインタが以前に出現したノードを指している。
//
// 例
// 入力: A->B->C->D->E->C(最初のCと同じもの)
// 出力: C