數(shù)據(jù)結(jié)構(gòu)java棧代碼,java定義棧的數(shù)據(jù)結(jié)構(gòu)

【JAVA】寫一個(gè)類,實(shí)現(xiàn)棧這種數(shù)據(jù)結(jié)構(gòu),要求底層數(shù)據(jù)使用ArrayList存儲(chǔ)。

棧的特點(diǎn)的就是后進(jìn)先出,那么你就linkedList,如果要添加一個(gè)元素,就把他存到最后一個(gè)位置,要取一個(gè)元素,也從最后開始取就可以實(shí)現(xiàn)了,只有l(wèi)inkedList才有存,取,刪最后一個(gè)元素這個(gè)方法,所以要要用linkedList

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、湯旺網(wǎng)站維護(hù)、網(wǎng)站推廣。

代碼如下:

public

class

StudyTest

{

private

LinkedList

list

=

new

LinkedList

();

public

String

get()

{

return

list.getLast();

}

public

void

add(String

str)

{

this.list.addLast(str);

}

public

void

remove(){

this.list.removeLast();

}

}

用java編寫出來:用數(shù)組實(shí)現(xiàn)一個(gè)棧

public class Stack {

private Object[] stack;

//這個(gè)不需要;

//private int top = 0; //初始化棧頂

//這個(gè)也不需要;

//寫一個(gè)棧出來,最好是可以動(dòng)態(tài)的,可以自己改變大小的,即數(shù)組的長度;

//private int size = 0; // 初始化大小

//元素個(gè)數(shù);

private int size;

//默認(rèn)長度為10;

public Stack(){

this(10);

}

//也可以自己設(shè)置長度,即容量;

public Stack(int len){

stack = new Object[len];

}

//返回元素個(gè)數(shù);

public int size(){

return size;

}

//返回?cái)?shù)組長度,即容量;

public int capacity(){

return stack.length;

}

//實(shí)現(xiàn)動(dòng)態(tài)的數(shù)組;

public void ensureCapacity(){

if(size() == capacity()){

Object[] newStack = new Object[size() * 3 / 2 + 1];

System.arraycopy(stack, 0, newStack, 0, size());

stack = newStack;

}

}

//入棧;

public void push(Object o){

size++;

ensureCapacity();

stack[size - 1] = o;

}

/*

public void push(Object object) {

if (isFull()) {

System.out.println("棧滿! 入棧失敗");

}

stack[top++] = object;

}

*/

//判空;

public boolean isEmpty(){

return size == 0;

}

//出棧;

public Object pop(){

//首先要判空;

if(isEmpty()){

throw new ArrayIndexOutOfBoundsException("不能為空");

}

Object o = stack[--size];

stack[size] = null;

return o;

}

/*

// 出棧

public Object pop() {

Object object = stack[--top];

stack[top] = null;

return object;

}

*/

/*

// 計(jì)算棧當(dāng)前大小

public int size() {

return top;

}

// 判斷是否是空棧

public boolean isEmpey() {

return top == 0;

}

// 判斷是否棧滿

public boolean isFull() {

return top = size;

}

public Stack(int size) {

this.size = size;

}

*/

public static void main(String[] args) {

Stack stack = new Stack(3);

String[] data = new String[] { "a", "b", "c" };

for (int i = 0; i data.length; i++) {

stack.push(data[i]);

System.out.println(data[i] + "");

}

System.out.println("***********");

while (!stack.isEmpty()) {

System.out.println(stack.pop() + "");

}

//}

}

}

你自己對比一下,我是在你的里面修改的

關(guān)于數(shù)據(jù)結(jié)構(gòu)(java)的一個(gè)代碼

描述棧抽象數(shù)據(jù)類型的SStack接口的聲明

public interfaceSStackE //棧接口

{

boolean isEmpty(); //判斷是否空棧,若空棧返回true

boolean push(E element); //元素element入棧,若操作成功返回true

E pop(); //出棧,返回當(dāng)前棧頂元素,若??辗祷豱ull

E get(); //取棧頂元素值,未出棧,若??辗祷豱ull

}

順序棧類具體操作方法的聲明:

importdataStructure.linearList.SStack;

public classSeqStackE implements SStackE

//順序棧類

{

private Object value[]; //存儲(chǔ)棧的數(shù)據(jù)元素

private int top; //top為棧頂元素下標(biāo)

public SeqStack(int capacity) //構(gòu)造指定容量的空棧

{

this.value = newObject[Math.abs(capacity)];

this.top=-1;

}

public SeqStack() //構(gòu)造默認(rèn)容量的空棧

{

this(10);

}

public boolean isEmpty() //判斷是否空棧,若空棧返回true

{

return this.top==-1;

}

public boolean push(E element) //元素element入棧,若操作成功返回true

{

if (element==null)

return false; //空對象(null)不能入棧

if (this.top==value.length-1) //若棧滿,則擴(kuò)充容量

{

Object[] temp = this.value;

this.value = newObject[temp.length*2];

for (int i=0; itemp.length;i++)

this.value[i] = temp[i];

}

this.top++;

this.value[this.top] = element;

return true;

}

public E pop() //出棧,返回當(dāng)前棧頂元素,若棧空返回null

{

if (!isEmpty())

return (E)this.value[this.top--];

else

return null;

}

public E get() //取棧頂元素值,未出棧,棧頂元素未改變

{

if (!isEmpty())

return (E)this.value[this.top];

else

return null;

}

public String toString() //返回棧中各元素的字符串描述

{

String str="{";

if (this.top!=-1)

str +=this.value[this.top].toString();

for (int i=this.top-1; i=0; i--)

str += ","+this.value[i].toString();

return str+"} ";

}

實(shí)例引用public static void main(String args[])

{

SeqStackString stack = newSeqStackString(20);

System.out.print("Push: ");

char ch='a';

for(int i=0;i5;i++)

{

String str =(char)(ch+i)+"";

stack.push(str);

System.out.print(str+" ");

}

System.out.println("\n"+stack.toString());

System.out.print("Pop : ");

while(!stack.isEmpty()) //全部出棧

System.out.print(stack.pop().toString()+" ");

System.out.println();

}

網(wǎng)頁名稱:數(shù)據(jù)結(jié)構(gòu)java棧代碼,java定義棧的數(shù)據(jù)結(jié)構(gòu)
文章出自:http://www.muchs.cn/article20/hchoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)、企業(yè)建站、定制網(wǎng)站品牌網(wǎng)站制作響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作