栈的数组实现
来源:互联网 发布:sql 排序后加上序号 编辑:程序博客网 时间:2024/06/05 00:49
今天复习下栈,自己写一遍:
1.栈是限制插入和删除只能在同一个位置上进行的表,该位置是表的末端叫做栈顶。栈有时也叫后进先出(LIFO)表,基本操作有pop(删除)和push(插入)。
2.栈的数组实现:
package com.algith;public class MyStack<T> { private int size; private T[] elements = null; private static final int DEFAULT_SIZE = 10; public MyStack(){ clear(); } public int size(){ return size; } @SuppressWarnings("unchecked") public void clear(){ size = 0; elements = (T[]) new Object[DEFAULT_SIZE]; } public void push(T t){ if(size==elements.length){ ensureCapacity(size*2+1); } elements[size++] = t; } public T pop(){ if(size<1) return null; int topIndex = size - 1; T t = elements[topIndex]; remove(topIndex); return t; } @SuppressWarnings("unchecked") public void ensureCapacity(int capacity){ if(capacity<size)return; T[] oldElements = elements; elements = (T[]) new Object[capacity]; for(int i=0;i<size;i++){ elements[i] = oldElements[i]; } } public T remove(int index){ if(index<0||index>size) throw new ArrayIndexOutOfBoundsException(); T removeValue = elements[index]; for(int i=index;i<size-1;i++){ elements[i] = elements[i+1]; } size--; return removeValue; } public T get(int index){ if(index<0||index>size) throw new ArrayIndexOutOfBoundsException(); return elements[index]; } public T set(int index,T newValue){ if(index<0||index>size) throw new ArrayIndexOutOfBoundsException(); T oldValue = elements[index]; elements[index] = newValue; return oldValue; } public void print(){ for(int u=0;u<size;u++){ System.out.println(elements[u]+",index"+u); } } public static void main(String[] args) { MyStack<Integer> stack = new MyStack<Integer>(); for(int i=0;i<10;i++){ stack.push(i+12); } System.out.println(stack.size()); System.out.println(stack.remove(1)); System.out.println(stack.size()); System.out.println(stack.pop()); System.out.println(stack.size()); stack.print(); }
0 0
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的C数组实现
- 下推栈的数组实现
- 【数据结构】栈-数组的实现
- [数据结构] 栈的数组实现
- ADT栈的数组实现
- c++ 栈的数组实现
- 数组实现栈的数据结构
- 转载 注解@PostConstruct与@PreDestroy讲解及实例 - 云淡风轻、仅此一抹 - 博客频道 - CSDN.NET http://blog.csdn.net/yaerfeng/art
- 代理、nsnotification和kvo的区别和用法
- UILabel使用不同的大小和字体、颜色
- JAVA发送邮件代码
- mybatis 使用经验小结,batch批量提交大量数据
- 栈的数组实现
- Apache Thrift之java入门例子
- 跟我一起写 Makefile(十三)
- 密码加密
- 前端移动端页面开发
- OpenCV for Android Studio 学习笔记(一):NDK及OpenCV的安装配置
- noetpad++ 使用svn
- .NET MVC Iframe 'X-Frame-Options' to 'SAMEORIGIN' 解决办法
- SSH框架整合开发详解(个人笔记)