基于java的數據結構學習——數組實現的棧以及簡單應用

棧 Stack

  • 棧是一種線性結構
  • 相比數組,棧對應的操作是數組的子集
  • 只能從一端添加元素,也只能從一端取出元素
  • 這一端稱為棧頂
  • 棧是一種后進先出的數據結構

棧的應用

  • 無處不在的Undo操作(撤銷)
  • 括號匹配(編譯器)
  • 程序調用的系統棧

funA(){

1? ...

2? B()

3? ...

}

funB(){

1? ...

2? C()

3? ...

}

funC(){

1? ...

2? ...

3? ...

}

棧的實現及復雜度分析

Stack<E>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<---implement---? ? ArrayStack<E>

  • void push(E)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?O(1) 均攤
  • E pop()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?O(1)?均攤
  • E peek()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?O(1)
  • int getSize()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??O(1)
  • boolean isEmpty()? ? ? ? ? ? ? ? ? ? ? ??O(1)

實現源碼:

public class ArrayStack<E> implements Stack<E>{private Array<E> array;// 有參構造public ArrayStack(int capacity){array = new Array<>(capacity);}// 默認構造public ArrayStack(){this(10);}// 判斷棧是否為空@Overridepublic boolean isEmpty(){return array.isEmpty();}// 判斷棧是否已滿public boolean isFull(){return array.isFull();}// 獲取棧的容量@Overridepublic int getCapacity(){return array.getCapacity();}// 獲取棧內元素個數@Overridepublic int getSize(){return array.getSize();}// 查看棧頂元素@Overridepublic E peek(){return array.getLast();}// 棧頂元素出棧@Overridepublic E pop(){return array.removeLast();}// 入棧@Overridepublic void push(E e){array.addLast(e);}@Overridepublic String toString(){StringBuilder res = new StringBuilder();res.append(String.format("Stack Size = %d, Capacity = %d\n", array.getSize(), array.getCapacity()));res.append("Stack [");for (int i = 0; i < array.getSize(); i++) {res.append(array.get(i));if (i != array.getSize() - 1)res.append(", ");}res.append("] top");return res.toString();}public static void main(String[] args){ArrayStack<Integer> stack = new ArrayStack<>();for (int i = 0; i < 10; ++i) {stack.push(i);System.out.println(stack);if (i % 3 == 2) {stack.pop();System.out.println(stack);}}}
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448156.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 總結題目

題例1 # 打印如下長方形&#xff1a; ************ * * * * ************ # 打印如下長方形&#xff1a; print("*****************") print("* *") print("* *") print("****************…

vue : 引入、安裝 jquery 、bootstrap

一、vue安裝jquery 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、新建一個vue工程。 2、在項目文件夾下&#xff0c;使用命令 npm install jquery --save-dev 引入jquery。 np…

2013駕考科目三考試難點解析

原來規定科目三考試上車準備、起步、直線行駛等13個道路駕駛技能項目。123號令實施后&#xff0c;科目三考試分兩部分。道路駕駛技能考試項目增加到16項&#xff0c;增加了加減擋位操作、路口左轉彎、路口右轉彎3個考試項目&#xff0c;駕駛里程也增加。如何順利通過2013駕考科…

leetcode練習——棧(1)

題號20&#xff1a;Invalid Parentheses Given a string containing just the characters (, ), {, }, [ and ], determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets.Open brackets must be…

Asp.Net MVC 頁面代碼壓縮篩選器-自定義刪除無效內容

Asp.Net MVC 頁面代碼壓縮篩選器 首先定義以下篩選器&#xff0c;用于代碼壓縮。 /*頁面壓縮 篩選器*/public class WhiteSpaceFilter : Stream{private Stream _shrink;private Func<string, string> _filter;public WhiteSpaceFilter(Stream shrink, Func<string, s…

基于java的數據結構學習——數組實現的隊列和循環隊列及性能對比

隊列 Queue 隊列也是一種線性結構相比數組&#xff0c;隊列對應的操作是數組的子集只能從一端&#xff08;隊尾&#xff09;添加元素&#xff0c;只能從另一端&#xff08;隊首&#xff09;取出元素隊列是一種先進先出的數據結構 隊列的實現及復雜度分析 Queue<E> voi…

新手如何準確的控制油門

日常練車還不賴&#xff0c;可是一換車就容易加大油門兒&#xff0c;有啥子辦法能美好的扼制油呢?和調的坐位有關系嗎? 答&#xff1a;油門兒跟剎車被視為交通工具扼制的魂靈。交通工具引擎發動機的油門兒&#xff0c;通常是靠踏板來扼制的&#xff0c;也稱加速踏板&#xff…

vue 項目:文件夾 結構 、配置詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 項目配置 首先&#xff0c;在確定好使用的框架和組件庫后&#xff0c;先要大致了解它們&#xff0c;做到文檔基本熟悉。本次開發使用…

hdoj2553(N皇后問題)

Problem : 2553 ( N皇后問題 ) Judge Status : Accepted RunId : 2619754 Language : G Author : huwenbiao Code Render Status : Rendered By HDOJ G Code Render Version 0.01 Beta/***************************************************************\ *Author:Hu…

基于java的數據結構學習——數組實現的棧以及簡單應用C++實現

基于java的數據結構學習——數組實現的棧以及簡單應用的 C 實現 源碼&#xff1a; // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTURE_ARRAYSTACK_H #define DATA_STRUCTURE_ARRAYSTACK_H#include "Stack.h" #include "MyArray.h"template&…

女性開車5大安全駕車好習慣 為您支招

一些女性車主技術不夠熟練&#xff0c;緊急處理能力差&#xff0c;開車過程中需要注意更多的細節。養成一些好習慣&#xff0c;對于女性車主來說&#xff0c;開車的安全度會大大提高。 ● 車窗上不掛毛絨玩具 汽車是生活的一部分空間&#xff0c;許多女性車主都喜歡把這部分空間…

DIV 半透明層、 CSS實現網頁 背景半透明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 DIV半透明實現&#xff0c;使用CSS實現DIV成半透明效果&#xff0c;CSS實現層與背景半透明效果。 一、DIV CSS半透明基礎介紹 - …

node 安裝 webpack

首先要安裝 Node.js&#xff0c; Node.js 自帶了軟件包管理器 npm&#xff0c;Webpack 需要 Node.js v0.6 以上支持&#xff0c;建議使用最新版 Node.js。 用 npm 安裝 Webpack&#xff1a; $ npm install webpack -g此時 Webpack 已經安裝到了全局環境下&#xff0c;可以通過命…

Thinking in C++遇到的函數指針及應用

// // Created by PC-Saw on 2019/1/24. //#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一個函數指針&#xff0c;接受一個int型參數&#xff0c;返回一個指向10個int指針數組的指針 /* 2. */ typedef i…

html 標簽內背景圖片自適應 div 大小

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 只需通過css設置background-size屬性為contain&#xff0c;即 background-size:contain 注意&#xff1a;一定要在先設置background之…

Code Project精彩系列(轉)

Code Project精彩系列&#xff08;轉&#xff09; Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp 建立一個類似C#的環境, 實現控件拖拉&#xff0c;屬性 Packet Capture and Analayzer 網絡封包截獲 http…

加速時如何換擋

加速時如何換擋&#xff0c;您知道嗎?為了使換擋過程順利進行&#xff0c;變速器內齒輪平穩嚙合&#xff0c;必須掌握好發動機轉速&#xff0c;在適當時機推動變速桿操縱齒輪嚙合。為此&#xff0c;要通過反復練習&#xff0c;一邊踩踏油門踏板&#xff0c;一邊聽發動機運轉聲…

C++ 學習雜談:sizeof和sizeof(string)的問題

最近遇到一個令我困惑的問題&#xff0c;就是 sizeof&#xff08;string&#xff09;的值&#xff0c;之前在vs2010上測得是固定28&#xff0c;最近在用CLion&#xff0c;上面測得是4&#xff0c;出現了不一樣的結果&#xff0c;我又在vs2013上試了一下&#xff0c;結果又不一樣…

vue 項目 引用(外部) js、css

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我的工程結構&#xff1a; 1. 引入 css 有 2 種方式&#xff1a; 方式 1 <script type"text/javascript">import .…

FAQ:Container Classes篇

1、Why should I use container classes rather than simple arrays?&#xff08;為什么應該使用容器類而不是簡單的數組&#xff1f;&#xff09; In terms of time and space, a contiguous array of any kind is just about the optimal construct for accessing a sequen…