用Array 实现stack

用Array来实现Stack,语言c#。

欢迎大家批评指正。

关键点:

  1. 当数组满的时候,把数组长度延长2倍

  2. 当非空元素等于数组长度的1/4的时候,把数组长度减半。


public class Stack<T>
{
T[] a = new T[1];
int size = 0;

public bool IsEmpty()
{
return size == 0;
}

public void Push(T data)
{
if (size == a.Length)
{
resize(a.Length * 2);
}

a[size++] = data;
}

public T Pop()
{
if (size == 0)
{
throw new Exception("The stack is Empty");
}

T result = a[--size];
a[size] = default(T);
if (size == a.Length / 4)
{
resize(a.Length / 2);
}

return result;
}

private void resize(int newLength)
{
T[] b = new T[newLength];
for (int i = 0; i < size; i++)
{
b[i] = a[i];
}

a = b;
}
}

用Array 实现stack

时间: 2024-10-08 17:20:28

用Array 实现stack的相关文章

Scala中的集合:Iterator、BitSet、Set、Map、Stack、Vector、List、Array

 5.   util包 5.1.     架构 http://www.scala-lang.org/docu/files/collections-api/collections.html The following figure shows all collections in package scala.collection. These are all high-level abstract classes or traits, which generally have mutable

How to implement common datastructures (List, Stack, Map) in plain Java - Tutorial

List, Map and Stack implementations in Java This article describes how to implement data structures (List Stack, Map) in Java. The implementations in this articles are for demonstration and education purpose. They do not try to be as efficient as the

[CareerCup] 3.6 Sort Stack 栈排序

3.6 Write a program to sort a stack in ascending order (with biggest items on top). You may use at most one additional stack to hold items, but you may not copy the elements into any other data structure (such as an array). The stack supports the fol

716. Max Stack

Design a max stack that supports push, pop, top, peekMax and popMax. push(x) -- Push element x onto stack. pop() -- Remove the element on top of the stack and return it. top() -- Get the element on the top. peekMax() -- Retrieve the maximum element i

数据结构总结

剑指OfferJAVA版 1.      排序算法 稳定性的概念: 假定待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,称这种排序算法是稳定的,否则称为不稳定的. package com.ljl.sort; import org.junit.Test; /** * 七大排序算法 * @author acer * */ public class Sort { private int[] unsorted={1,3,2,8,9,7,6,6,5,3,4};

1、创建 CRUD普通dataGrid(表格)

在实现功能之前,我们要做以下几个准备: 分以下几个步骤:开发工具,easyUI包,目录结构,创建数据库,创建相应的页面视图,后台代码编写,优化: 第一步:开发工具 我的开发工具是Hbuild,开发语言是PHP,开发数据库是MySQL,服务器是Apache: HBuilder.HBuilder开发工具可以在官网下载最新版本工具:http://www.dcloud.io/下载: WampServer开发环境下载.http://wampserver-64bit.en.softonic.com/.选择三

栈的简单应用1-平衡符号

因为在编程中,使用{}()[]等都是成对出现的,因此可以使用栈来进行一些匹配判断. 原理: 读取一段字符串,如果遇到{([这些开放字符,就将其压入栈中,如果读到})]这些封闭字符,就与当前栈顶的符号进行比较,如果栈顶的符号正好是其对应的开放符号,将栈顶元素弹出,继续读取.否则,出现警告.但是如果弹出栈顶后新的栈顶是与其匹配的开放符号,那么就是它出错了.如果全部字符串读取完毕但是栈不是空的的话,那么栈剩下的字符串都缺少匹配. 简单代码,因为使用的输入流问题对程序实现有较大误差,但思路没有问题,需要

Leetcode 题目列表(难度、出现频率、知识点)

不全,但好像没看到有更好的版本,刷前132题暂时凑合着用吧! 转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Character

两种实现栈ADT的方式

栈是一种先进后出或说是后进先出的数据结构,书中介绍了两种简单实现方法,其中使用链表的是比较方便的方式,而是用数组的方式效率比较高,但是需要初始化的时候指明最大数组元素上限个数. 下面是简单实现: 1. 链表方式 ListStack.cpp 1 /*栈的数组实现*/ 2 #include "iostream" 3 #include "stdlib.h" 4 5 #define log(s); std::cout<<s<<std::endl; 6