棧和隊列代碼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://m.kartarina.com/article36/hjocsg.html

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

廣告

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

成都定制網站建設
主站蜘蛛池模板: 久久精品无码一区二区日韩AV | 无码熟妇人妻在线视频| 无码少妇一区二区三区| 亚洲成a∧人片在线观看无码| 免费无码午夜福利片| 精品人妻大屁股白浆无码| 熟妇人妻系列aⅴ无码专区友真希| 久久久久亚洲av无码专区蜜芽| 少妇久久久久久人妻无码| 亚洲日韩精品一区二区三区无码| 中文字幕人成无码人妻综合社区| 亚洲v国产v天堂a无码久久| 伊人无码精品久久一区二区| 亚洲AV综合色区无码另类小说| 无码少妇丰满熟妇一区二区| 无码中文字幕av免费放dvd| 国产色爽免费无码视频| 久青草无码视频在线观看| 东京热HEYZO无码专区| 中文字幕无码视频手机免费看| 国产亚洲精品a在线无码| 中文字幕无码精品三级在线电影 | a级毛片无码免费真人| 免费看成人AA片无码视频羞羞网| 亚洲AV无码第一区二区三区| 国产成人无码一区二区在线观看 | 99久无码中文字幕一本久道| 亚洲精品无码久久| 中文字幕无码乱码人妻系列蜜桃 | 国产精品免费无遮挡无码永久视频| 国产乱人伦中文无无码视频试看| 久久久久久久亚洲Av无码| 人妻av无码一区二区三区| 久久久久亚洲AV片无码下载蜜桃| 中文无码伦av中文字幕| 性无码专区无码片| 无码午夜人妻一区二区三区不卡视频 | 中文无码人妻有码人妻中文字幕| 午夜无码中文字幕在线播放| 亚洲国产精品无码久久青草| 中文字幕av无码一区二区三区电影 |