棧和隊列代碼java 棧和隊列的定義及基本操作

跪求用JAVA語言實現一個棧和一個隊列,數據元素為double型。。。具體在問題補充里

public?interface?MyStackT?{

站在用戶的角度思考問題,與客戶深入溝通,找到饒平網站設計與饒平網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都做網站、成都網站建設、成都外貿網站建設、企業官網、英文網站、手機端網站、網站推廣、國際域名空間、雅安服務器托管、企業郵箱。業務覆蓋饒平地區。

/**

?*?判斷棧是否為空

?*/

boolean?isEmpty();

/**

?*?清空棧

?*/

void?clear();

/**

?*?棧的長度

?*/

int?length();

/**

?*?數據入棧

?*/

boolean?push(T?data);

/**

?*?數據出棧

?*/

T?pop();

}

public?class?MyArrayStackT?implements?MyStackT?{

private?Object[]?objs?=?new?Object[16];

private?int?size?=?0;

@Override

public?boolean?isEmpty()?{

return?size?==?0;

}

@Override

public?void?clear()?{

//?將數組中的數據置為null,?方便GC進行回收

for?(int?i?=?0;?i??size;?i++)?{

objs[size]?=?null;

}

size?=?0;

}

@Override

public?int?length()?{

return?size;

}

@Override

public?boolean?push(T?data)?{

//?判斷是否需要進行數組擴容

if?(size?=?objs.length)?{

resize();

}

objs[size++]?=?data;

return?true;

}

/**

?*?數組擴容

?*/

private?void?resize()?{

Object[]?temp?=?new?Object[objs.length?*?3?/?2?+?1];

for?(int?i?=?0;?i??size;?i++)?{

temp[i]?=?objs[i];

objs[i]?=?null;

}

objs?=?temp;

}

@SuppressWarnings("unchecked")

@Override

public?T?pop()?{

if?(size?==?0)?{

return?null;

}

return?(T)?objs[--size];

}

@Override

public?String?toString()?{

StringBuilder?sb?=?new?StringBuilder();

sb.append("MyArrayStack:?[");

for?(int?i?=?0;?i??size;?i++)?{

sb.append(objs[i].toString());

if?(i?!=?size?-?1)?{

sb.append(",?");

}

}

sb.append("]");

return?sb.toString();

}

}

//棧的鏈表實現

public?class?MyLinkedStackT?implements?MyStackT?{

/**

?*?棧頂指針

?*/

private?Node?top;

/**

?*?棧的長度

?*/

private?int?size;

public?MyLinkedStack()?{

top?=?null;

size?=?0;

}

@Override

public?boolean?isEmpty()?{

return?size?==?0;

}

@Override

public?void?clear()?{

top?=?null;

size?=?0;

}

@Override

public?int?length()?{

return?size;

}

@Override

public?boolean?push(T?data)?{

Node?node?=?new?Node();

node.data?=?data;

node.pre?=?top;

//?改變棧頂指針

top?=?node;

size++;

return?true;

}

@Override

public?T?pop()?{

if?(top?!=?null)?{

Node?node?=?top;

//?改變棧頂指針

top?=?top.pre;

size--;

return?node.data;

}

return?null;

}

/**

?*?將數據封裝成結點

?*/

private?final?class?Node?{

private?Node?pre;

private?T?data;

}

}

棧與隊列的實現(java)

import java.util.Stack;

public class Translate {

//程序入口

public static void main(String[]args){

int n = Translate.translate(3467,8);

System.out.println("結果是:"+n);

}

public static int translate(int number, int base_num) {

//使用棧

StackIntegerstack = new StackInteger();

while(number0){

//壓棧

stack.push(number % base_num);

number /= base_num;

}

int n = stack.size();

int val=0;

//依次出棧并合成結果(用我們熟悉的十進制表示,所以乘以10)

for(int i=0;in;i++){

val=val*10+stack.pop();

}

return val;

}

}

JAVA中隊列和棧的區別

隊列(Queue):是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表;

棧(Stack):是限定只能在表的一端進行插入和刪除操作的線性表。

區別如下:

一、規則不同

1. 隊列:先進先出(First In First Out)FIFO

2. 棧:先進后出(First In Last Out )FILO

二、對插入和刪除操作的限定不同

1. 隊列:只能在表的一端進行插入,并在表的另一端進行刪除;

2. 棧:只能在表的一端插入和刪除。

三、遍歷數據速度不同

1.

隊列:基于地址指針進行遍歷,而且可以從頭部或者尾部進行遍歷,但不能同時遍歷,無需開辟空間,因為在遍歷的過程中不影響數據結構,所以遍歷速度要快;

2.

棧:只能從頂部取數據,也就是說最先進入棧底的,需要遍歷整個棧才能取出來,而且在遍歷數據的同時需要為數據開辟臨時空間,保持數據在遍歷前的一致性。

新聞名稱:棧和隊列代碼java 棧和隊列的定義及基本操作
鏈接URL:http://www.kartarina.com/article36/hjocsg.html

成都網站建設公司_創新互聯,為您提供響應式網站標簽優化建站公司網站導航搜索引擎優化

廣告

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

成都定制網站建設
主站蜘蛛池模板: av无码久久久久久不卡网站| 无码国模国产在线无码精品国产自在久国产 | 亚洲日韩国产二区无码| 无码专区人妻系列日韩精品少妇| 国产精品午夜无码体验区| 亚洲精品无码mv在线观看网站| 精品亚洲AV无码一区二区三区| 日日摸日日碰人妻无码| 亚洲中文字幕在线无码一区二区| 无码熟熟妇丰满人妻啪啪软件 | 亚洲国产精品无码久久一区二区| 久久亚洲日韩看片无码| 粉嫩高中生无码视频在线观看| 精品久久久无码21p发布| 一区二区三区无码视频免费福利| 久久久久久人妻无码| 十八禁视频在线观看免费无码无遮挡骂过 | 无码囯产精品一区二区免费| 亚洲av无码国产精品色在线看不卡 | 亚洲AV无码一区二区乱子伦| 无码8090精品久久一区| 人妻少妇精品无码专区| 亚洲国产精品无码久久久| 国产拍拍拍无码视频免费| 人妻无码一区二区视频| 免费无码看av的网站| 中文无码字幕中文有码字幕| 无码丰满少妇2在线观看| 亚洲AV无码久久精品成人| 国产成年无码AV片在线韩国| 亚洲Aⅴ无码一区二区二三区软件 亚洲?V无码乱码国产精品 | 东京热人妻无码一区二区av| 无码成人AAAAA毛片| 少妇极品熟妇人妻无码| 无遮掩无码h成人av动漫| 中日韩亚洲人成无码网站| 亚洲国产日产无码精品| 亚洲av无码专区青青草原| 亚洲AV无码AV吞精久久| 人妻在线无码一区二区三区| 东京热一精品无码AV|