用数组模拟栈

数组是固定大小的,不能改变长度,要想达到数组扩容的目的,就只能把当前数组复制到一个更长长度的数组中;

使用Arrays.copyOf()方法

源码如下:

public static short[] copyOf(short[] original, int newLength) {

short[] copy = new short[newLength];

System.arraycopy(original, 0, copy, 0,

Math.min(original.length, newLength));

return copy;

}

可以看出,内部调用了System.arraycopy()方法。

下面是用数组实现一个栈的代码:

class MinStack {

/** initialize your data structure here. */

int[] stack ;//数组

int defaultSize = 2;//默认大小

int realNumber;//存在的数量

public MinStack() {

this.stack = new int[defaultSize];

}

public void push(int x) {

if(realNumber == stack.length){

stack = Arrays.copyOf(stack,stack.length+defaultSize);

}

stack[realNumber++] = x;

}

public void pop() {

if(realNumber > 0){

realNumber--;

}

}

public int top() {

return stack[realNumber-1];

}

public int getMin() {

int min = stack[0];

for(int i = 0;i < realNumber;i++){

if(min > stack[i]){

min = stack[i];

}

}

return min;

}

}

c语言 数组扩容,数组的扩容相关推荐

  1. 扩容是元素还是数组_数组是如何随机访问元素?数组下标为什么从0开始,而不是1?...

    作者:鹏磊 来源:搜云库技术团队 数组如何实现随机访问元素 什么是数组? 数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储相同类型的数据. 什么是线性表(Linear List) ...

  2. arraylist扩容是创建新数组吗 java_Java ArrayList扩容问题实例详解

    本文研究的主要是Java ArrayList扩容问题实例详解的相关内容,具体介绍如下. 首先我们需要知道ArrayList里面的实质的其实是一个Object类型的数组,ArrayList的扩容问题其实 ...

  3. 《恋上数据结构第1季》动态扩容数组原理及实现

    动态扩容数组 什么是数据结构? 线性表 数组(Array) 动态数组(Dynamic Array) 动态数组接口设计 清除所有元素 - clear() 添加元素 - add(E element).ad ...

  4. C#高性能低GC 非托管动态扩容数组

    开始之前 相比固定长度的Array,大家可能在编程的时候经常会使用List<T>,同时可能会经常往里面Add东西,因为List具有可扩容性,但是注重GC的朋友会发现(比如Unity开发者) ...

  5. c语言uint8的数组怎么转换为uint32_剖析JS和Redis的数据结构设计:数组

    语言的数据结构相通性 最近读了Redis的原理实现,感受到程序语言的相通性,只要你掌握了语言的共性,触类旁通其他语言的开发就变得非常简单了. 总体来说,各种程序语言底层的设计思想是非常相通的,首先针对 ...

  6. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. C语言实现 动态数组 处理任意类型数据

    引言:动态数组在C/C++.Java.Python等语言中应用广泛,高级语言一般通过调用类或接口等可以快捷使用,C语言实现动态数组需要手动构造,以下为实现过程. 1 结构体构造动态数组 typedef ...

  8. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

  9. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

  10. c语言程序设计歌手大奖赛,C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委...

    导航:网站首页 > C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委 C语言二维数组怎么做:设计青年歌手参加歌曲 ...

最新文章

  1. windows中路径\和 linux中用/
  2. Spark累加器(Accumulator)陷阱及解决办法
  3. 分享php中四种webservice实现的简单架构方法及实例(转)
  4. LeetCode 2149. 按符号重排数组(双指针)
  5. 在matlab中function,Matlab中function函数使用操作方法
  6. 在ntpdate同步时间的时候出现“the NTP socket is in use, exiting”
  7. day01 python入门之路
  8. 推荐系统之协同过滤算法
  9. mac的win10蓝牙鼠标问题
  10. java channels_java.nio.channels.NotYetConnectedException
  11. storyboard(故事版)新手教程 图文详解 1.创建一个无约束的导航栏加选项卡(tabbar)故事版
  12. 可视化展示炫酷3D图表
  13. iOS-音频 + 视频
  14. 使用DOS重定位技术执行isqlw(SQL查询分析器)
  15. cmd窗口最小化运行
  16. 全球及中国3D打印产业投资价值调研及未来竞争趋势研究报告2021-2027年版
  17. 本科科研经历(思想方法篇)
  18. 【DDD】持久化领域对象的方法实践
  19. Adams导入SW模型不显示
  20. 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET...

热门文章

  1. 【译】《学习JavaScript设计模式》(二)
  2. 安装NTOP网络监控工具(wheezy)
  3. 灰鸽子病毒手工清除方法
  4. python交互式和文件式_使用Python创建和自动化交互式仪表盘
  5. python中ix用法_Python中使用ix的数据帧子集
  6. leetcode 218. 天际线问题
  7. leetcode475. 供暖器(二分查找)
  8. leetcode455. 分发饼干(贪心算法)
  9. leetcode1254. 统计封闭岛屿的数目(dfs)
  10. css flexbox模型_Flexbox和CSS Grid之间的主要区别