自己写的栈

package com.util.MyStack;

public class MyStack {

private int maxSize;
    private long[]stackArray;
    private int top;
    
    public MyStack(int s){
        maxSize = s;
        stackArray = new long[maxSize];
        top = -1;
    }
    public void push(long j){
        stackArray[++top] = j;
    }
    public long pop(){
        return stackArray[top--];
    }
    public long peek(){
        return stackArray[top];
    }
    public boolean isEmpty(){
        return top==-1;
    }
    public boolean isFull(){
        return top==maxSize-1;
    }
    
    
}

时间: 2024-07-30 09:55:57

自己写的栈的相关文章

用数组写出栈(先进后出)

<pre name="code" class="java">//用数组写出栈(先进后出) import java.util.Collection; import java.util.NoSuchElementException; public class ArrayStack<E> { private int initalSize = 5; private Object[] stack; private int head; private i

汇编 学到哪里写哪里——栈

---恢复内容开始--- 栈的两个操作入栈(PUSH) 出栈(POP) 原谅色 注意:任意时刻SS:SP指向栈定元素 SS和SP定义栈 PUSH AX的执行, 做了两件事: (1)SP=SP-2 (2)将AX的内容放到SS:SP指向的内存单元 栈空的时候 SP指向什么? 比如这个栈的战地(栈底)是1000FH 那么空战(空栈)的时候指向的是10010H POP AX 执行过程与PUSH相反 (1)将SS:SP指向的内存单元的数据放到AX中 (2)SP=SP+2 SS 和 SP只能指向栈的顶 但是

看数据结构写代码(8)顺序栈的实现

欢迎指出 代码 不足之处 在写顺序栈的时候 犯了两个错误,:一个是 对栈的 认识不够清楚,栈顶指针的下一个位置为栈顶元素: 另一个是粗心,在用 realloc 分配内存的时候,忽略了元素本身的大小,只写了 元素的个数. 希望引以为戒. 上代码: // SqStack.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h> #include <cstdio> //故意将值设置的比较小,以测试

看数据结构写代码(9)链栈的实现

在写链栈的时候 和 顺序栈一样 犯了两个错误: 一个是 在 入栈 和 进栈顶时候 忘记 操作 linkstack.len 了,另一个是 在写 stackClear 的时候 犯了一个 低级的内存错误. 这两个问题 都是 粗心造成的. 希望 引以为戒 在做下一个例子:数值转换时,又发现了一个问题:在 stackPop 没有返回 pop元素的值.唉  欢迎指出代码不足 下面上代码: // LinkStack.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"

数据结构-栈的实现之运算式求值

运算时求值核心思想:将运算式逐字符读取,若是运算数就进运算数栈,若是运算符就与运算符栈顶比较运算符的优先级来做相应的操作.直到遇到运算式的结束符且运算符栈里没有运算符为止. 因为用到了两个栈(运算符栈和运算数栈)且这两个栈的基本存储类型还不一样,一个为char类型存储运算符,而另一个为float类型存储数值的.所以就调用了两个栈的头文件Stack_Float.h和Stack_Char.h.两个头文件实现的基本操作是一样的,只是里面的结构体类型进行了改动.如下: 1 /*Stack_Char.h*

(hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)

题目: ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 73 Accepted Submission(s): 57   Problem Description ACboy was kidnapped!! he miss his mother very much and is very

分别用数组和链表实现栈和队列

2015.2.8星期二,晴天 栈的数组操作: 栈的特点:先进后出,后进先出. 用数组的方式实现:首先需要创建一个结构体,在结构体里面包括数据指针.指向栈顶的”指针“和标记栈的大小的一个变量.数据指针是指向一定大小的数组的首地址.结构体和这个数组够成一个完整的栈. 1.在创建栈的操作中,主要就是创建这个结构体和这个数组,并对其进行一定的初始化,这个操作和链表的创建比较类似,初始化的语句:stack->max_depth = max_depth; //说明栈的大小stack->pop = -1;

Tarjan中栈的分析与SLT栈的实现

首先看一下手写的栈: 1 do{ 2 printf("%d ",stack[index]); 3 visit[stack[index]]=0; 4 index--; 5 }while(x!=stack[index+1]);//出栈,并且输出. 6 printf("\n"); 我们可以发现.x是与index的上一个元素比较的 举个例子 栈:1 3 2 4 5     x=2 这样的话会输出 5  4   2 但是stl不支持和栈顶的上一个元素比较,因为上一个元素一定是

数据结构与算法之栈

前言:我也是即学即写的,难免有错误.欢迎之处这篇博文的不足之处. 一.什么是栈? 栈是数据结构的一种,他的原理就是后进先出(先进后出是一样的道理),如图(无图言屌) 看到没,你如果把栈当成一个开口向上的容器的话,你最先存储的a1要想取出来,必须把上面的元素都取出来,而你最后一个存储的a5元素却可以第一个取出来.这就是后进先出. PS:我这里的top是指向栈顶元素的,这里用到的top初值是-1.有的书中(好像是严蔚敏的)的top的初始值是0.所以top指向栈顶元素的上一个存储单元.我个人觉得还是t