日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

(堆)栈

發(fā)布時(shí)間:2025/5/22 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (堆)栈 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

(堆)棧概述

棧是一種特殊的線性表,是操作受限的線性表

棧的定義和特點(diǎn) ?定義:限定僅在表尾進(jìn)行插入或刪除操作的線性表,表尾—棧頂,表頭—棧底,不含元素的空表稱空棧 ?特點(diǎn):先進(jìn)后出(FILO)或后進(jìn)先出(LIFO

棧的結(jié)構(gòu)

如下圖所示:

線性表的操作主要包括:

1清空(堆)棧

(2)判斷是否為空

3)元素的個(gè)數(shù)

4)入

5

(6)取棧頂元素

接口

由此,對(duì)隊(duì)列的抽象數(shù)據(jù)類型定義Queue接口如下:
package stack; /*** (堆)棧* @author Administrator**/ public interface Stack {/*** 清空堆棧*/public void clear();/*** 入棧* @param obj 入棧的元素*/public void push(Object obj);/*** 出棧* @return 出棧的結(jié)果*/public Object pop();/*** 判斷是否為空* @return*/public boolean isEmpty();/*** 求元素的個(gè)數(shù)* @return 元素的個(gè)數(shù)*/public int size();/*** 取棧頂元素* @return 棧頂元素*/public Object peek();}

順序(堆)棧


結(jié)構(gòu)模型


棧頂指針top,指向?qū)嶋H棧頂后的空位置,初值為0。

棧的初始空間大小為M

top=0,棧空,此時(shí)出棧,則下溢(underflow);

top=M,棧滿,此時(shí)入棧,則上溢(overflow);


源代碼

package stack; /*** 順序(堆)棧* @author Administrator**/ public class ArrayStack implements Stack{private static int DEFAULT_SIZE = 100; private int Top;Object array[];public ArrayStack() {Top = 0;array = new Object[DEFAULT_SIZE];}public boolean isEmpty() {return 0 == Top ;}public void expand() {Object[] newArray = new Object[2 * array.length];for(int i=0; i<array.length; i++) {newArray[i] = array[i];}array = newArray;}/*public void expand() {try {Object[] newArray = new Object[2*DEFAULT_SIZE];for(int i=0; i<array.length; i++) {newArray[i] = array[i];}array = newArray;}catch(OutOfMemoryError e) {System.out.println("error in expand of Stack class!");//e.printStackTrace();}DEFAULT_SIZE = 2*DEFAULT_SIZE;}*/public void push(Object obj) {if(Top == array.length) {expand();} array[Top] =obj;Top ++;}public Object pop() {if(0 == Top) throw new IllegalStateException();Object val = array[-- Top];array[Top] = null;return val;}public void clear() {for(int i=0; i<array.length; i++) {array[i] = null;Top = 0;}}public Object peek() {if(0 == Top) throw new IllegalStateException();return array[Top - 1];}public int size() {return Top;}public String toString() {String s = "[";for(int i=Top-1; i>=0 ; i--) {s = s + array[i];s = s + ", ";}s = s + "]";return s;}}

鏈?zhǔn)?堆)棧


結(jié)構(gòu)模型


源代碼


package stack;/*** 鏈?zhǔn)?堆)棧的結(jié)點(diǎn)* @author luoweifu**/ class Node{Object data; //數(shù)據(jù)元素Node next; //后驅(qū)結(jié)點(diǎn)public Node() {this(null);}public Node(Object data) {this.data = data;this.next = null;} }/*** 鏈?zhǔn)?堆)棧, 無(wú)頭結(jié)點(diǎn)* @author Administrator**/ public class LinkStack implements Stack {private Node top; //棧頂指針private int size; //棧的大小public LinkStack() {top = null;size = 0;}@Overridepublic void clear() {top = null;size = 0;}@Overridepublic void push(Object obj) {Node p = new Node(obj);if(top == null) {top = p;} else {p.next = top;top = p;}size ++;}@Overridepublic Object pop() {Node p = top;top = top.next;size --;return p.data;}@Overridepublic boolean isEmpty() {if(size == 0)return true;elsereturn false;}@Overridepublic int size() {return size;}@Overridepublic Object peek() {return top.data;}public String toString() {StringBuilder sb = new StringBuilder("[");Node p = top;if(p == null) {sb.append("");} else {do{sb.append(p.data + ", ");}while((p = p.next) != null);}sb.append("]");return sb.toString();} }

測(cè)試(堆)棧

package stack;public class Test {/*** 測(cè)試堆棧* @param args*/public static void main(String[] args) {//Stack stack = new ArrayStack();Stack stack = new LinkStack();for(int i=0; i<10; i++) {stack.push(i);}System.out.println(stack.toString());Object a = stack.pop();System.out.println(a + stack.toString());stack.push(20);Object b = stack.peek();System.out.println( b + stack.toString());stack.clear();System.out.println( "數(shù)據(jù)數(shù)量:" + stack.size()+ " isEmpty? " + stack.isEmpty() + " 數(shù)據(jù)為:" + stack.toString());}}

結(jié)果

[9, ?8, ?7, ?6, ?5, ?4, ?3, ?2, ?1, ?0, ?] 9[8, ?7, ?6, ?5, ?4, ?3, ?2, ?1, ?0, ?]
20[20, ?8, ?7, ?6, ?5, ?4, ?3, ?2, ?1, ?0, ?]
數(shù)據(jù)數(shù)量:0 ?isEmpty? true ?數(shù)據(jù)為:[]



轉(zhuǎn)載于:https://my.oschina.net/verynix/blog/365814

總結(jié)

以上是生活随笔為你收集整理的(堆)栈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 插吧插吧综合网 | 国产一卡二卡 | 日韩毛片网 | 国产l精品国产亚洲区久久 午夜青青草 | 国产噜噜噜 | 爽插| 日韩精品色 | 久久精品2019中文字幕 | 欧美激情一区二区 | 久久久这里有精品 | 黄色国产毛片 | 国产欧美日韩 | 91成人精品视频 | 76少妇精品导航 | 久久久久久国产 | 国久久| 干骚视频 | 欧美成性色 | 欧美撒尿777hd撒尿 | www.毛片| 好吊操这里只有精品 | 日批视频在线 | 婷婷五月花 | 中文字幕久久一区 | 成人欧美日韩 | 哪个网站可以看毛片 | 亚洲v欧美 | 亚洲午夜精品久久久久久浪潮 | 韩日视频一区 | 少妇熟女视频一区二区三区 | 91精品国产成人 | 亚洲性久久久 | caoporen超碰| 国产97色| 香港三级日本三级韩国三级 | 欧美xxxx网站 | 一区二区视频网 | 欧美激情一级 | 国产精品视频免费看 | 国产日本亚洲 | av男人网 | 天天做天天爱天天操 | 国产精品36p | 成人av社区| 99久久精品免费视频 | 日韩三级理论 | 国产系列精品av | 亚洲卡一卡二卡三 | 欧美人与按摩师xxxx | 天堂网视频| 一区二区三区视频在线观看 | 最新av在线播放 | 极品91| 国产特黄一级片 | 无码少妇精品一区二区免费动态 | 无码无遮挡又大又爽又黄的视频 | 最新国产视频 | 日韩女同一区二区三区 | 亚日韩一区 | aa爱做片免费 | 国产女人18毛片水真多18精品 | 精品一区二区三区电影 | 五月婷婷中文字幕 | 亚洲精品日韩在线观看 | 黄频在线看 | 青青草国产在线播放 | 韩国三级在线视频 | 春日野结衣av | 午夜专区 | 久久久99精品免费观看 | 亚洲九九精品 | 久久国产激情视频 | 三级黄色短视频 | 小柔的裸露日记h | 乌克兰做爰xxxⅹ性视频 | 日本在线观看中文字幕 | 人妻一区二区三区视频 | 碰碰久久 | 日本九九视频 | 黑人黄色一级片 | 国产一区二区三区在线视频观看 | 国产免费午夜 | 老鸭窝成人 | 成人在线视频免费播放 | 五月网站 | 超碰人人99 | 国产乱free国语对白 | 国产精品丝袜黑色高跟鞋的设计特点 | 日本特黄特黄刺激大片 | 超碰av在线免费观看 | 国产不卡视频在线播放 | 97人妻精品一区二区三区 | 三级理论电影 | 操碰在线视频 | 香蕉国产在线观看 | 亚洲av永久无码国产精品久久 | 亚洲欧美日韩国产成人精品影院 | 国产 日韩 一区 | 久草综合在线 |