java 順序棧_Java實現順序棧

一、分析

棧是限定僅在表的一端進行插入或刪除操作的線性表,對于棧來說,操作端稱為棧頂,另一端則稱為棧底,棧的修改是按照后進先出的原則進行的,因此又稱為后進先出的線性表。

順序棧是指利用順序存儲結構實現的棧,即利用一組地址連續的存儲單元依次存放自棧底到棧頂的數據元素,同時附設指針top指示棧頂元素在順序棧中的位置。

一個標準的順序棧具有如下基本操作:

1、初始化順序棧

2、銷毀順序棧

3、清空順序棧

4、檢測順序棧是否為空

5、返回順序棧中的元素個數

6、返回順序棧的棧頂元素,不修改棧頂指針

7、向順序棧頂中壓入元素

8、從順序棧頂中彈出元素

9、從棧底到棧頂遍歷順序棧

在Java中,可以將整個順序棧定義成一個類,類中定義有一個數組類型的屬性表示順序存儲結構來存儲元素,再定義一個int類型的屬性top來作為指針指示棧頂元素在數組中的位置,順序棧的基本操作則定義成類的方法。初始化順序棧即實例化類,銷毀順序棧即銷毀實例化出來的對象。

二、實現

1、定義類屬性和構造函數

1 classInitStack{2

3 private int [] stack = null;     //存儲元素

4

5 private int top = 0;          //指示棧頂元素在順序棧中的位置

6

7 public InitStack(int max) {      //初始化自定義大小的順序棧

8 this.stack = new int[max];9 }10 }

2、清空順序棧

1 public voidclearStack() {2 this.top = 0;         //直接令棧頂指針指向棧底即可

3 }

3、檢測順序棧是否為空

1 public booleanstackEmpty() {2 if(this.top == 0) {       //檢測棧頂指針是否指向棧底即可

3 return true;4 }else{5 return false;6 }7 }

4、返回順序棧中的元素個數

1 public intstackLength() {2 return this.top;       //棧頂指針的值即代表了元素個數

3 }

5、返回順序棧的棧頂元素,不修改棧頂指針

1 public int[] getTop() {2

3 if (this.top == 0) {       //如果順序棧為空,則返回空

4 return null;5 }6

7 int [] i = new int[1];8 i[0] = stack[this.top - 1];   //獲取棧頂元素

9

10 returni;11 }

6、向順序棧頂中壓入元素

1 public boolean push(intvalue) {2

3 if(this.top == this.stack.length) {   //判斷順序棧是否已滿

4 return false;5 }6

7 this.stack[this.top] = value;       //壓入元素

8 this.top++;                 //棧頂指針加一

9 return true;10 }

7、從順序棧頂中彈出元素

1 public int[] pop() {2

3 if (this.top == 0) {     //判斷順序棧是否已空

4 return null;5 }6

7 int [] i = new int[1];8 this.top--;           //棧頂指針減一

9 i[0] = stack[this.top];   //獲取棧頂元素

10 returni;11 }

8、從棧底到棧頂遍歷順序棧

1 public String stackTraverse() {           //通過輸出順序棧元素來表示遍歷

2

3 String s = "";                   //存儲要輸出的元素

4

5 for (int i = 0; i < this.top; i++) {     //循環遍歷

6 s += this.stack[i] + "、";7 }8

9 if(s.length() == 0) {              //如果未獲取到元素,返回空字符串

10 returns;11 }12

13 return s.substring(0,s.length() - 1);    //除去最后一個頓號后返回

14 }

三、小結

以上就是順序棧用Java的實現,由于只定義了整數的數組,因此只能操作整數數據,但順序棧的基本思想都已實現。

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

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

相關文章

Spring IO platform

什么是Spring IO PlatformSpring IO Platform&#xff0c;簡單的可以認為是一個依賴維護平臺&#xff0c;該平臺將相關依賴匯聚到一起&#xff0c;針對每個依賴&#xff0c;都提供了一個版本號&#xff0c;這些版本對應的依賴都是經過測試的&#xff0c;可以保證一起正常使用。…

二十多歲不信,三十多歲卻深信不疑的道理

1.那些年偷的懶、荒廢的時間、敗壞的身體&#xff0c;都&#xff01;得&#xff01;還&#xff01; 年輕的時候心比天高&#xff0c;以為自己能干出一番大事業&#xff0c;后來慢慢意識到自己只是個普通人。 2.不和講道理。 3.原來被嗤之以鼻的門當戶對是有一定道理的。 4.以貌…

javascript === 和==的區別

原文鏈接&#xff1a;https://blog.csdn.net/seven_amber/article/details/62889290 -------------------------------------------------------------------- 用于比較 判斷 兩者相等 在比較的時候可以轉自動換數據類型用于嚴格比較 判斷兩者嚴格相等 嚴格比較…

authentication java_HTTP基本認證(Basic Authentication)的JAVA實例代碼

大家在登錄網站的時候&#xff0c;大部分時候是通過一個表單提交登錄信息。但是有時候瀏覽器會彈出一個登錄驗證的對話框&#xff0c;如下圖&#xff0c;這就是使用HTTP基本認證。下面來看看一看這個認證的工作過程:第一步:客戶端發送http request 給服務器,服務器驗證該用戶是…

Python數據分析入門(四)

前言上期給大家分享了關于豆瓣5500部電視劇的分析&#xff0c;那么這次我們就給吃貨們帶來一些福利&#xff0c;此次我們的主題為“尋找最好吃的火鍋”。進入主題之前&#xff0c;先給所有的吃貨們帶來一桌美味的火鍋&#xff0c;作為各位看官的前菜。數據采集此次我們采集的是…

微信開發者工具下載

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

java continue goto_Java中goto和break、continue實現區別

goto 關鍵字很早就在程序設計語言中出現。事實上&#xff0c;goto 是匯編語言的程序控制結構的始祖&#xff1a;“若條件 A&#xff0c;則跳到這里&#xff1b;否則跳到那里”。若閱讀由幾乎所有編譯器生成的匯編代碼&#xff0c;就會發現程序控制里包含了許多跳轉。然而&#…

Linux VirtualBox安裝及使用指南

2019獨角獸企業重金招聘Python工程師標準>>> VirtualBox是一款虛擬機軟件。雖然它的功能并不及VMware Workstation Pro&#xff0c;但它對開源精神的堅持使得它在Linux中依然深受歡迎。 唯一難以令人接受的是&#xff0c;VirtualBox的安裝步驟較為復雜。不過&#x…

java web vm_java web .vm文件??

在JavaWeb項目中有很多.vm文件&#xff0c;打開以后是類似于.NETMVC項目中的.cshtml文件的形式#if($linkList)#set($itemsOnLine0)#foreach($linkin...在Java Web項目中有很多.vm文件&#xff0c;打開以后是類似于.NET MVC項目中的.cshtml文件的形式#if($linkList)#set ($items…

Android studio gradle 無法獲取 pom文件

Android studio 3.1 導入app項目后&#xff0c;gradle無法獲取 pom文件 具體保存內容如下&#xff1a; Could not GET https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-g…

生產環境linux下安裝兩個及兩個以上tomcat實踐

前言: 在生產環境部署程序項目中&#xff0c;有時候由于服務器緊張或缺少服務器等原因,往往都需要安裝兩個及兩個以上tomcat。我們需要在/etc/profile中增加tomcat的環境變量&#xff0c;然后在新增加的tomcat的bin目錄下的catalina.sh中引用自己在/etc/profile中配置的環境變量…

java 內存 四_java最終化的內存保留問題(4)

四、一種代替最終化的選擇在前面一節中的示例還存在一種不確定性可能&#xff1a;JVM并不能保證它在最終化隊列中調用對象的終結器的順序。而來自于所有類(應用程序&#xff0c;庫&#xff0c;等等)的終結器都是被同等對待的。因此&#xff0c;一個占有大量內存或一種稀有的本地…

基于Spring Boot不同的環境使用不同的配置方法

原文路徑&#xff1a;http://www.jb51.net/article/132589.htm ---------------------------------------- 默認是profile為dev&#xff0c;可以修改 spring 多文件配置&#xff1a; 1、properties文件 2、YAML文件 一、properties文件 在 Spring Boot 中&#xff0c; 多環境配…

java set方法賦值_java方面:private屬性,沒有set方法,只有get方法,如何給這個屬性賦值?...

富國滬深用反射吧&#xff0c;然后設置setAccessible為true就可以了&#xff0c;如下&#xff1a;public class Test {private String readOnly;public String getReadOnly() {return readOnly;}public static void main(String[] args) throws SecurityException, NoSuchField…

SpringBoot項目在IntelliJ IDEA中實現熱部署

spring-boot項目熱部署idea工具&#xff1a; &#xff08;1&#xff09;、pom文件引入&#xff1a;都需要為true<!-- 熱部署模塊 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId…

java nio 對消息分片_Java NIO:應用

Java NIO 是一種非阻塞的、面向塊而非字節的 IO 方式。雖然 Java 的傳統 IO 也進行了一些基于 NIO 的改造&#xff0c;NIO 仍然能夠帶來許多優勢。面向流的 IO 方便我們一個字節一個字節地處理數據&#xff0c;有利于實現過濾等功能&#xff0c;更加優雅和簡單。相應地&#xf…

使用Notepad++來比較文件

原文連接&#xff1a;https://blog.csdn.net/sanqima/article/details/50467154 -----------------------------------------------------------------------------Notepad&#xff0c;也叫npp&#xff0c;是一款類似于記事本的開源小軟件。它運行便攜&#xff0c;體積小、資源…

利用lamda函數 的函數式編程 實現scrapy審計外網安全問題

2019獨角獸企業重金招聘Python工程師標準>>> import scrapy from scrapy.spiders import Spiderdef parse_response(response, ip_in):title response.xpath("/html/head/title").extract()[0]filename quotes.txtwith open(filename, a) as f:f.write(…

Linux服務器上新增開放端口號

原文連接&#xff1a; https://blog.csdn.net/u012562106/article/details/52882666 ---------------------------------------開放端口的方法&#xff1a; 方法一&#xff1a;命令行方式 1. 開放端口命令&#xff1a; /sbin/iptables -I INPUT -p tcp --dport 8…

return ,continue,break的用法與區別總結

1、return 語句的作用 (1) return 從當前的方法中退出,返回到該調用的方法的語句處,繼續執行。 (2) return 返回一個值給調用該方法的語句&#xff0c;返回值的數據類型必須與方法的聲明中的返回值的類型一致&#xff0c;可以使用強制類型轉換來是數據類型一致。 (…