栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

栈数据结构之括号匹配

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

栈数据结构之括号匹配

定义了三个内部类(是自定义数组对象,栈接口,栈的实现)

如果不想用我实现的数组和栈,也可以导入java自带包(import java.util.Stack;)此时请直接看倒数第二个函数

public class Solution {
    public class Array {
 private E[] data;
 private int capacity;
 private int size;

 // 构造函数,传入数组的容量capacity构造Array
 public Array(int capacity){
     data = (E[]) new Object[capacity];
     size = 0;
 }

 //无参的构造函数,默认数组的容量capacity=10
 public Array(){
     this(10);
 }

 //获取数组中的元素个数
 public int getSize(){
     return size;
 }

 //获取数组的容量
 public int getCapacity(){
     return capacity;
 }

 //返回数组是否为空
 public boolean isEmpty(){
     return size == 0;
 }

 //向所有元素后添加一个新元素
 public void addLast(E e){
     add(size, e);
 }

 //在所有元素前添加一个新元素
 public void addFirst(E e){
     add(0, e);
 }

 //在第index个位置插入一个新的元素e
 public void add(int index, E e){
     if(index < 0 || index > size){
  throw new IllegalArgumentException("AddList failed. Require index >=0 and index <= size!");
     }
     if(size == data.length){
//     throw new IllegalArgumentException("AddList failed. Arrat is full!");
//     System.out.println(size);
//     System.out.println(data.length);
  resize(2*data.length);
     }
     for(int i = size -1; i>= index; i--){
  data[i+1] = data[i];
     }
     data[index] = e;
     size ++;
 }

 //获取index索引位置的元素
 E get(int index){
     if(index < 0 || index > size){
  throw new IllegalArgumentException("Get failed. Index is illegal!");
     }
     return data[index];
 }

 //修改index索引位置的元素
 void set(int index, E e){
     if(index < 0 || index > size){
  throw new IllegalArgumentException("Get failed. Index is illegal!");
     }
     data[index] = e;
 }

 //查找数组中是否有元素e
 public boolean contains(E e){
     for (int i=0; i=size){
  throw new IllegalArgumentException("Remove failed. Index is illegal");
     }

     E ret = data[index];
     for(int i=index+1; i {

 int getSize();
 boolean isEmpty();
 void push(E e);
 E pop();
 E peek();
    }
    public class ArrayStack implements Stack {

 Array array;

 public ArrayStack(int capacity){
     array = new Array<>(capacity);
 }

 public ArrayStack(){
     array = new Array<>();
 }

 @Override
 public int getSize() {
     return array.getSize();
 }

 @Override
 public boolean isEmpty() {
     return array.isEmpty();
 }

 @Override
 public void push(E e) {
     array.addLast(e);
 }

 @Override
 public E pop() {
     return array.removeLast();
 }

 @Override
 public E peek() {
     return array.getLast();
 }

 public int getCapacity(){
     return array.getCapacity();
 }

 @Override
 public String toString(){
     StringBuilder res = new StringBuilder();
     res.append("Stack: ");
     res.append("[");
     for (int i=0; i stack = new ArrayStack<>();
 for(int i=0; i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/221152.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号