线性表——栈

package Algorithm;
/**
 * 栈 
 * 1.先进后出
 * 2.对插入/删除操作的“限定”,只能在表的一端进行插入删除操作
 * 3.遍历数据速度不同,最先放入最后取出,遍历数据需要开辟临时空间
 */
public class MyStack {

	private Object[] data;

	private int size;

	private int top;

	public MyStack() {
		super();
		this.data = new Object[10];
		this.size = 0;
	}

	public void push(Object o){
		data[top++] = o;
		size++;
	}

	public Object pop(){
		size--;
		return data[--top];
	}

	public Object peek(){
		return data[top-1];
	}
	public static void main(String[] args) {
		MyStack s = new MyStack();
		s.push(1);
		s.push(2);
		s.push(3);
		System.out.println(s.peek());
		System.out.println(s.pop());
		System.out.println(s.pop());
	}
}
时间: 2024-10-13 05:37:10

线性表——栈的相关文章

数据结构和算法学习总结04 线性表---栈

栈 栈(Stack)是特殊的线性表,是只允许在一端进行插入和删除的线性表. 允许插入和删除的叫栈顶,反之则是栈底. 栈的插入称为进栈,删除称为出栈. 特性是:后进先出,所以栈也叫后进先出表,简称LIFO表(Last In First Out). 因为栈是线性表,所以也有顺序表和链表两种形式,一般我们常用顺序表. 从代码中可以看出:与顺序表相比实际上就是插入和删除操作发生了改变. #include <iostream> using namespace std; const int Stack_S

数据结构-线性表-栈

栈:后进先出(LIFO) last in first out栈是一种特殊的线性表,只能在线性表的一端进行操作.栈顶 top栈底 bottom 实现方式:顺序结构实现,线性结构实现 链式存储实现 LinkStack.h #ifndef _LINKSTACK_H_ #define _LINKSTACK_H_ typedef void LinkStack; LinkStack* LinkStack_Create(); void LinkStack_Destroy(LinkStack* stack);

5 线性表-栈-链式存储

头大-- 栈是一种功能受限的线性表 1.基本功能实现 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<iostream> 4 using namespace std; 5 #define TRUE 1 6 #define FALSE 0 7 #define OK 1 8 #define ERROR 0 9 #define OVERFLOW -2 10 #define STACK_INIT_SIZE 100//存储空

2.线性表——栈

1.什么是栈 [1]. 栈是一种只能在一端进行插入和删除操作的线性表:插入:入栈(push):删除:出栈(pop): [2]. 栈是按照“先进后出”(Last In First Out, LIFO)的原则存储数据: 栈顶(Top):允许删除和插入: 栈底(Botton) : [3]. 栈的分类: 静态栈:其核心是数组,类似于一个连续内存的数组,需要提前确定好栈的大小: 动态栈:其核心是链表,内存够用的前提下,可以无穷大,不连续: [4]. 栈的表示: 1.1 栈的表示 2. 栈的基本操作 [1]

6 线性表-栈-顺序存储

自己简直是强迫症晚期,上次因为对访问结构体成员该用什么方法困惑了很久,导致没把顺序存储的捣鼓出来(明明比链式的要好写) 今天花了个20分钟调好了 因为今天比较晚,赶时间就没给类型起别名用ElemType写,直接用了int类型.需要的话可以自行更改. 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<iostream> 4 using namespace std; 5 #define maxsize 50 6 /*顺序

7 线性表-栈-顺序存储的拓展-迎面增长的存储方式

描述:设有两个栈,S1和S2,都采用顺序栈的存储方式.两个栈共享一个存储区:[0,--maxsize-1]目的:可以尽量利用空间,减少溢出的可能,采用栈顶相向.迎面增长的存储方式 PS:要注意判断栈满栈空的检查 #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; #define maxsize 100 /*栈结构的定义*/ typedef struct { int st

2 限定性线性表——栈与队列

1 栈与队列     1.1 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数 在该栈中,调用min.push和pop方法 要求时间复杂度均为O(1) 算法思想: 要求时间复杂度均为 O(1),增加辅助空间实现,即增加一个辅助栈存储min值 例如:data 中依次入栈 5, 4, 3, 8, 10, 11, 12, 1, 则 min 中依次入栈 5, 4, 3,no,no, no, no, 1. no 代表此次不如栈,如果入栈的元素小于等于 min 中的栈

数据结构_线性表_顺序存储之1顺序栈2共享栈_链式存储之链栈_栈的应用举例

1>//栈是先进后出,后进先出的线性表 简称LIFO线性表 //栈的顺序存储结构成为顺序栈(sequebtial stack). //顺序栈利用一组地址连的存储单元依次存放从栈底到 栈顶的数据元素,通常用一维数组存放栈的元素 //"指针"top并非指针,而是表示栈顶元素的当前位置 //top不是指针型变量而是整形变量,top=0空栈,top=MaxSize 表示满栈,当top>maxsize 表示栈溢出 代码 #include <stdio.h> #includ

python web为什么要学数据结构与算法面试官为什么总问那几个算法和线性表二叉树

算法是什么? 举个简单的例子 当年刘景生病危刘琦被卷入继位之事 无奈求助于诸葛亮 以上古兵书为由 邀孔明阁楼相谈.... 诸葛亮曾说 那部阵书开篇就是阵法源自于心法 所以古代军师进步也是看兵法 算法也是同理 虽然我们作为web后端开发人员 但是每天所见所闻日子久也就适应了. 但是想要再进一步 两种方法 一 多看高质量代码 二 看算法 我们作为web开发可能算法运用的不是很多 每天也就是写接口调接口和产品经理撕 但是算法最重要的地方是会帮你扩充你的逻辑思维 可能刚看算法的人认为太难了我真学不来 举