鱼C论坛

 找回密码
 立即注册
查看: 514|回复: 2

[已解决]数据结构

[复制链接]
发表于 2023-11-13 17:37:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
3.请编程完成泛型类GenericStack(栈),GenericStack的基本功能设计要求:创建栈、出栈、入栈、获取栈顶元素、判栈空,并写出全部测试类。
最佳答案
2023-11-13 17:37:46
public class GenericStack<T> {
    private List<T> stack;

    public GenericStack() {
        stack = new ArrayList<>();
    }

    public void push(T item) {
        stack.add(item);
    }

    public T pop() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.remove(stack.size() - 1);
    }

    public T peek() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.get(stack.size() - 1);
    }

    public boolean isEmpty() {
        return stack.isEmpty();
    }
}
import org.junit.Test;
import static org.junit.Assert.*;

public class GenericStackTest {

    @Test
    public void testStackOperations() {
        GenericStack<Integer> stack = new GenericStack<>();
        assertTrue(stack.isEmpty());

        stack.push(1);
        assertFalse(stack.isEmpty());
        assertEquals(1, (int) stack.peek());

        stack.push(2);
        assertEquals(2, (int) stack.peek());

        assertEquals(2, (int) stack.pop());
        assertEquals(1, (int) stack.pop());

        assertTrue(stack.isEmpty());
    }
}

该泛型类GenericStack实现了栈的基本功能,包括创建栈、出栈、入栈、获取栈顶元素和判断栈空。测试类GenericStackTest使用JUnit测试了栈的各项操作,确保其功能正常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-13 17:37:46 | 显示全部楼层    本楼为最佳答案   
public class GenericStack<T> {
    private List<T> stack;

    public GenericStack() {
        stack = new ArrayList<>();
    }

    public void push(T item) {
        stack.add(item);
    }

    public T pop() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.remove(stack.size() - 1);
    }

    public T peek() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.get(stack.size() - 1);
    }

    public boolean isEmpty() {
        return stack.isEmpty();
    }
}
import org.junit.Test;
import static org.junit.Assert.*;

public class GenericStackTest {

    @Test
    public void testStackOperations() {
        GenericStack<Integer> stack = new GenericStack<>();
        assertTrue(stack.isEmpty());

        stack.push(1);
        assertFalse(stack.isEmpty());
        assertEquals(1, (int) stack.peek());

        stack.push(2);
        assertEquals(2, (int) stack.peek());

        assertEquals(2, (int) stack.pop());
        assertEquals(1, (int) stack.pop());

        assertTrue(stack.isEmpty());
    }
}

该泛型类GenericStack实现了栈的基本功能,包括创建栈、出栈、入栈、获取栈顶元素和判断栈空。测试类GenericStackTest使用JUnit测试了栈的各项操作,确保其功能正常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-13 17:38:26 | 显示全部楼层
以下是泛型类GenericStack的实现以及测试类GenericStackTest的代码:

泛型类GenericStack的实现

[/code]java
import java.util.ArrayList;

// 泛型栈类
public class GenericStack<T> {
    private ArrayList<T> stack;

    // 创建空栈
    public GenericStack() {
        stack = new ArrayList<>();
    }

    // 入栈
    public void push(T item) {
        stack.add(item);
    }

    // 出栈
    public T pop() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }
        return stack.remove(stack.size() - 1);
    }

    // 获取栈顶元素
    public T peek() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }
        return stack.get(stack.size() - 1);
    }

    // 判栈空
    public boolean isEmpty() {
        return stack.isEmpty();
    }
}
[/code]

测试类GenericStackTest

[/code]java
public class GenericStackTest {
    public static void main(String[] args) {
        // 创建泛型栈
        GenericStack<Integer> stack = new GenericStack<>();

        // 入栈
        stack.push(1);
        stack.push(2);
        stack.push(3);

        // 获取栈顶元素并出栈
        System.out.println("栈顶元素:" + stack.peek());
        System.out.println("出栈元素:" + stack.pop());

        // 判断栈是否为空
        System.out.println("栈是否为空:" + stack.isEmpty());
        
        // 出栈直至栈空
        while (!stack.isEmpty()) {
            System.out.println("出栈元素:" + stack.pop());
        }
        
        // 判断栈是否为空
        System.out.println("栈是否为空:" + stack.isEmpty());
    }
}
[/code]

以上代码实现了泛型类GenericStack和测试类GenericStackTest。在测试类中,我们对栈的入栈、出栈、获取栈顶元素、判栈空等操作进行了测试,并输出了相应的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 16:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表