java使用數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列示例
(1)用數(shù)組實(shí)現(xiàn)的隊(duì)列:
//先自己定義一個(gè)接口
public interface NetJavaList {
public void add(Student t); //繼承該接口的類必須實(shí)現(xiàn)的方法
public Student get(int index);//隊(duì)列的加入,取出,隊(duì)列的大小
public int size();
}
定義一個(gè)學(xué)生類
class Student {
private String name ; //私有屬性 名字,學(xué)分
private int score ;
public Student(String name , int score){
this.name = name ;
this.score = score ;
}
public void printInfo(){
System.out.println("姓名"+name + "學(xué)分"+score ) ;
}
}
實(shí)現(xiàn)自定義接口
public class STList implements NetJavaList{
private Student[] str = new Student[0] ;
//增加隊(duì)列的元素
public void add(Student t) {
Student[] src = new Student[str.length+1];
for(int i=0;i<str.length;i++){
src[i]=str[i] ;
}
src[str.length]=t ;
str = src ;
}
//得到隊(duì)列中的某個(gè)元素
public Student get(int index) {
Student t = str[index];
return t;
}
//返回隊(duì)列的長(zhǎng)度
public int size() {
return str.length;
}
}
寫個(gè)主函數(shù)類實(shí)現(xiàn)下隊(duì)列
public class Manager {
public static void main(String[] args) {
STList sil = new STList() ;
for(int i=0;i<5;i++){
Student st = new Student("name"+i,i*10);
sil.add(st);
}
printList(sil) ;
}
//輸出隊(duì)列中的所有元素
public static void printList(STList t){
for(int i=0;i<t.size();i++){
Student f =t.get(i);
f.printInfo();
}
}
}
(2)鏈表實(shí)現(xiàn)的隊(duì)列
先定義一個(gè)節(jié)點(diǎn)類;
public class LinkNode {
private Object obj ; //節(jié)點(diǎn)內(nèi)的數(shù)據(jù)對(duì)象
private LinkNode next ; //對(duì)下一個(gè)節(jié)點(diǎn)的引用
//在創(chuàng)建節(jié)點(diǎn)對(duì)象的時(shí)候就傳入節(jié)點(diǎn)的數(shù)據(jù)對(duì)象
public LinkNode(Object obj){
this.obj = obj ;
}
public Object getObj(){
return obj ;
}
public void setObj(Object obj){
this.obj = obj ;
}
public LinkNode getNext(){
return next ;
}
public void setNext(LinkNode next){
this.next =next ;
}
}
然后寫個(gè)隊(duì)列的實(shí)現(xiàn)方法類
public class LinkList {
public static LinkNode root ;//第一個(gè)節(jié)點(diǎn)
public LinkNode last = null ;//最后的一個(gè)節(jié)點(diǎn)
public static void main(String ara[]){
LinkList df = new LinkList() ;
df.add(1);
df.add(2);
df.add(3);
df.printLinkList(root);
df.move(root,2) ;
df.move(root,2) ;
df.printLinkList(root);
}
/*
* 插入節(jié)點(diǎn)
*/
public void add(Object obj){
//創(chuàng)建一個(gè)新的節(jié)點(diǎn)
LinkNode t = new LinkNode(obj);
if(root ==null){
root = t ;
last = root ;
}else{
last.setNext(t);
last = t ;
}
}
/*
* 輸出操作
*/
public void printLinkList(LinkNode root){
if(null != root){
Object data = root.getObj();
System.out.println(data);
LinkNode temp = root.getNext();
printLinkList(temp) ;
}
}
/*
* 刪除操作
*/
public LinkNode move(LinkNode root,int index){
if(this.getLength()<index || index <0){
throw new RuntimeException("下標(biāo)越界:"+index +
",size:" +this.getLength()) ;
}else{
int count = 1 ;LinkNode sd = root ;
while(count!=index-1){
sd = sd.getNext();
}
sd.setNext(sd.getNext().getNext());
return root ;
}}
/*
* 得到鏈表的長(zhǎng)度
*/
public int getLength(){
int count = 0 ;
if(root==null){
return count ;
}
LinkNode node =root.getNext();
while(null != node){
count ++ ;
node=node.getNext();
}
//System.out.println((count+1));
return count+1 ;
}
}
相關(guān)文章
論java如何通過(guò)反射獲得方法真實(shí)參數(shù)名及擴(kuò)展研究
這篇文章主要為大家介紹了java如何通過(guò)反射獲得方法的真實(shí)參數(shù)名以及擴(kuò)展研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步早日升職加薪2022-01-01
spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn)
參數(shù)校驗(yàn)在很多地方都可以用到,本文主要介紹了spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
從零開(kāi)始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器
這篇文章主要給大家介紹了如何從零開(kāi)始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器的相關(guān)資料,由于springboot是內(nèi)嵌了tomcat,所以可以直接將項(xiàng)目打包上傳至服務(wù)器上,需要的朋友可以參考下2021-11-11
Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之?dāng)?shù)組
數(shù)組是有序的元素序列,若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來(lái)的一種形式2022-02-02
SpringCloud之分布式配置中心Spring Cloud Config高可用配置實(shí)例代碼
這篇文章主要介紹了SpringCloud之分布式配置中心Spring Cloud Config高可用配置實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
總結(jié)Java常用加解密方法AES?SHA1?md5
這篇文章主要為大家介紹了Java常用加密方法AES?SHA1?md5總結(jié)及示例demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟
這篇文章主要介紹了MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02

