鱼C论坛

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

[已解决]数据结构

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

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

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

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

  3.     public GenericStack() {
  4.         stack = new ArrayList<>();
  5.     }

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

  9.     public T pop() {
  10.         if (isEmpty()) {
  11.             throw new EmptyStackException();
  12.         }
  13.         return stack.remove(stack.size() - 1);
  14.     }

  15.     public T peek() {
  16.         if (isEmpty()) {
  17.             throw new EmptyStackException();
  18.         }
  19.         return stack.get(stack.size() - 1);
  20.     }

  21.     public boolean isEmpty() {
  22.         return stack.isEmpty();
  23.     }
  24. }
复制代码

  1. import org.junit.Test;
  2. import static org.junit.Assert.*;

  3. public class GenericStackTest {

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

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

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

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

  15.         assertTrue(stack.isEmpty());
  16.     }
  17. }
复制代码


该泛型类GenericStack实现了栈的基本功能,包括创建栈、出栈、入栈、获取栈顶元素和判断栈空。测试类GenericStackTest使用JUnit测试了栈的各项操作,确保其功能正常。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  3.     public GenericStack() {
  4.         stack = new ArrayList<>();
  5.     }

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

  9.     public T pop() {
  10.         if (isEmpty()) {
  11.             throw new EmptyStackException();
  12.         }
  13.         return stack.remove(stack.size() - 1);
  14.     }

  15.     public T peek() {
  16.         if (isEmpty()) {
  17.             throw new EmptyStackException();
  18.         }
  19.         return stack.get(stack.size() - 1);
  20.     }

  21.     public boolean isEmpty() {
  22.         return stack.isEmpty();
  23.     }
  24. }
复制代码

  1. import org.junit.Test;
  2. import static org.junit.Assert.*;

  3. public class GenericStackTest {

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

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

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

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

  15.         assertTrue(stack.isEmpty());
  16.     }
  17. }
复制代码


该泛型类GenericStack实现了栈的基本功能,包括创建栈、出栈、入栈、获取栈顶元素和判断栈空。测试类GenericStackTest使用JUnit测试了栈的各项操作,确保其功能正常。
小甲鱼最新课程 -> https://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。在测试类中,我们对栈的入栈、出栈、获取栈顶元素、判栈空等操作进行了测试,并输出了相应的结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-3 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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