java使用數(shù)組和鏈表實現(xiàn)隊列示例
更新時間:2014年01月29日 11:13:08 作者:
隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,只允許在表的后端(rear)進行插入操作,下面介紹一下java使用數(shù)組和鏈表實現(xiàn)隊列的示例
(1)用數(shù)組實現(xiàn)的隊列:
復制代碼 代碼如下:
//先自己定義一個接口
public interface NetJavaList {
public void add(Student t); //繼承該接口的類必須實現(xiàn)的方法
public Student get(int index);//隊列的加入,取出,隊列的大小
public int size();
}
定義一個學生類
復制代碼 代碼如下:
class Student {
private String name ; //私有屬性 名字,學分
private int score ;
public Student(String name , int score){
this.name = name ;
this.score = score ;
}
public void printInfo(){
System.out.println("姓名"+name + "學分"+score ) ;
}
}
實現(xiàn)自定義接口
復制代碼 代碼如下:
public class STList implements NetJavaList{
private Student[] str = new Student[0] ;
//增加隊列的元素
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 ;
}
//得到隊列中的某個元素
public Student get(int index) {
Student t = str[index];
return t;
}
//返回隊列的長度
public int size() {
return str.length;
}
}
寫個主函數(shù)類實現(xiàn)下隊列
復制代碼 代碼如下:
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) ;
}
//輸出隊列中的所有元素
public static void printList(STList t){
for(int i=0;i<t.size();i++){
Student f =t.get(i);
f.printInfo();
}
}
}
(2)鏈表實現(xiàn)的隊列
先定義一個節(jié)點類;
復制代碼 代碼如下:
public class LinkNode {
private Object obj ; //節(jié)點內(nèi)的數(shù)據(jù)對象
private LinkNode next ; //對下一個節(jié)點的引用
//在創(chuàng)建節(jié)點對象的時候就傳入節(jié)點的數(shù)據(jù)對象
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 ;
}
}
然后寫個隊列的實現(xiàn)方法類
復制代碼 代碼如下:
public class LinkList {
public static LinkNode root ;//第一個節(jié)點
public LinkNode last = null ;//最后的一個節(jié)點
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é)點
*/
public void add(Object obj){
//創(chuàng)建一個新的節(jié)點
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("下標越界:"+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 ;
}}
/*
* 得到鏈表的長度
*/
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 Hibernate中的持久化類和實體類關(guān)系
Hibernate是一種Java對象關(guān)系映射框架,通過持久化類將Java對象映射到數(shù)據(jù)庫表中。持久化類需要實現(xiàn)無參構(gòu)造器、具有標識屬性和使用注解或XML進行映射。Hibernate通過Session來管理對象的狀態(tài),包括臨時狀態(tài)、持久化狀態(tài)和游離狀態(tài)2023-04-04Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖
今天小編就為大家分享一篇關(guān)于Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12java8新特性 stream流的方式遍歷集合和數(shù)組操作
這篇文章主要介紹了java8新特性 stream流的方式遍歷集合和數(shù)組操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08SpringBoot如何監(jiān)控Redis中某個Key的變化(自定義監(jiān)聽器)
這篇文章主要介紹了SpringBoot如何監(jiān)控Redis中某個Key的變化(自定義監(jiān)聽器),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09