大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java編程基礎之數據結構棧

Java編程基礎之數據結構棧

更新時間:2020-07-20 16:24:10 來源:動力節點 瀏覽2342次

棧:一種僅允許在一端進行插入和刪除操作的線性表。它按照后進先出的原則存儲數據,先進入的數據被壓入棧底,最后的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最后一個數據被第一個讀出來),允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為后進先出表(LIFO,Last In First Out)。

棧一次只允許操作一個數據項,即最后插入的數據項。

下面是用Java數組實現的順序存儲結構的棧。

package?cn.zhf.list;
?class?MyStack?{
????private?int?maxSize;//定義棧的最大容量
????private?int[]?stackArray;//以數組方式存儲元素
????private?int?top;//棧頂
?
????//構造器,初始化
????public?MyStack(int?x){
????????maxSize?=?x;
????????stackArray?=?new?int[x];
????????top?=?-1;
????}
????//插入元素
????public?void?push(int?x){
????????stackArray[++top]?=?x;
????}
????//刪除頂部元素
????public?int?pop(){
????????return?stackArray[top--];
????}
????//查看棧頂部元素
????public?int?peek(){
????????return?stackArray[top];
????}
????//判斷棧是否為空
????public?boolean?isEmpty(){
????????return?(top?==?-1);
????}
????//判斷棧是否已滿
????public?boolean?isFull(){
????????return?(top?==?maxSize-1);
????}
}

下面是使用鏈表實現的棧。

package?cn.zhf.list;
//鏈表內存放的數據對象包裝
public?class?Link?{
????public?int?idata;//存放int?類型的數據
????public?double?ddata;//double類型的數據
????public?Link?next;//對下一個Link對象的引用
????public?Link(int?id,?double?dd)?{
????????idata?=?id;
????????ddata?=?dd;
????}
????public?void?diaplay()?{
????????System.out.println(idata?+?","?+?ddata);
????}
}
//鏈表
public?class?LinkList?{
????private?Link?first;//鏈表中保存的數據
????public?LinkList()?{
????????first?=?null;
????}
????public?boolean?isEmpty()?{
????????return?(first?==?null);
????}
????//插入一個元素
????public?void?insertFirst(int?id,?double?dd)?{
????????Link?link?=?new?Link(id,?dd);
????????link.next?=?first;//next元素鏈接first
????????first?=?link;//first元素鏈接link
????}
????//刪除一個元素
????public?Link?deleteFirst()?{
????????Link?temp?=?first;
????????first?=?first.next;
????????return?temp;
????}
????//顯示鏈表的元素
????public?void?displayLink()?{
????????Link?current?=?first;
????????while?(current?!=?null)?{
????????????current.diaplay();
????????????current?=?current.next;
????????}
????}
}
//用鏈表實現的棧
public?class?LinkStack?{
????????private?LinkList?list;
????????public?LinkStack(){
????????????list?=?new?LinkList();
????????}
????????public?void?push(int?id,double?dd){
????????????list.insertFirst(id,?dd);
????????}
????????public?Link?pop(){
????????????return?list.deleteFirst();
????????}
????????public?boolean?isEmpty(){
????????????return?list.isEmpty();
????????}
????????public?void?display(){
????????????list.displayLink();
????????}
????public?static?void?main(String[]?args)?{
????????LinkStack?ls?=?new?LinkStack();
????????ls.push(1,?2.1);
????????ls.push(2,?2.2);
????????ls.push(3,?2.3);
????????ls.display();
????????????????ls.pop();
????????????????ls.display();
????}
?
}

棧中的基本操作是:入棧、出棧和查看棧頂元素,以上兩種實現方式不一樣,但是方法名一樣,實現的功能也相同,因此可以將Stack定義為一個接口,兩個類分別實現這個接口,這樣,對于調用者完全隱藏了實現的細節,但不影響使用,這大概就是接口的抽象優勢。

Java編程基礎之數據結構棧

以上就是動力節點java培訓機構的小編針對“Java編程基礎之數據結構棧”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费在线观看黄色小视频 | 久久综合图片 | 久久午夜一区二区 | 色吧在线视频 | 中文字幕免费在线看线人动作大片 | 一级日本强免费 | 女人18毛片一级毛片在线 | 国产亚洲精品久久午夜 | 成年网站视频在线观看 | 日日摸夜夜添夜夜添97 | 国产一区二区三区不卡观 | 久久精品福利 | 99久久久无码国产精品 | 欧美激情欧美狂野欧美精品免费 | 日韩精品亚洲人成在线观看 | 久久99国产精品二区不卡 | 亚洲国产成人综合 | 欧美一级片网址 | 欧洲亚洲综合一区二区三区 | 欧美一级特黄乱妇高清视频 | 国产精品综合网 | 国产精品视频99 | 亚洲综合黄色 | 免费人成网站在线高清 | 亚色视频在线观看 | 中文字幕在线日韩 | 免费观看日本污污ww网站一区 | 波霸欧美性猛交xxxxxx | 国产在线91精品入口首页 | 天天舔天天操 | 亚洲伊人色一综合网 | 亚洲在线成人 | 国产成人精品日本亚洲语音2 | 中文字幕精品视频 | 久久精品免视看国产成人2021 | 曰本毛片 | 亚洲精品国产第一区二区多人 | 久久综久久美利坚合众国 | 久久狠狠 | 一区二区三区欧美日韩 | 国产一区成人 |