`

JAVA中数组、链表实现的队列的增加,返回长度,插入,删除

阅读更多

JAVA数组、链表实现的队列的增加,返回长度,插入,删除

 

数组:

 

数组是java中最基本的一中数据结构,数组一旦定义,它的长度就是固定的。数组也是一种对象,数组的对象本身的类型就是数组类型。定义数组时,一定要知名组中元素的类型。

 

数组有三种定义方式:

 

1.定义时指定数组长度,这样会使内存空间创建数组对象,但数组中每个位置的元素是默认值。原始类型,则为0,引用类型,则为null

2.创建数组的时候就转给元素赋值。

3.仅定义一个数组变量名,然后来赋值。

 

Eg1: int[]  ia = new int[10];

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

  ia[i]=i*100;}

Eg2: //仅定义了一个int类型的数组变量并没有指向数组对象,这时ia的值null

      int[] ia;

//将数组变量名指向一个数组对象,数组中的每个位置默认值是0

  ia= new int[5];

//字符串数组,定义时数组中的原值赋值

  String[] sa = new String[]{apple,orange,pineapple};

 

用数组实现的队列 :

/**  
 * 定义一个数组转化为的队列  
 */  
public class Array{   
    private int length=100;   
    private int add=20;   
    int count=0;   
       
// 用于传递数组初始长度和每次增加长度的构造器  
   
    public Array(int length,int add){   
        this.length=length;   
        this.add=add;   
    }   
       
 
//初始化数组   
    Object[] str = new Object[length];    
       
// 向数组中添加元素  
  
    public void add(E e){   
        count++;   
        if(count>str.length){   
            Object[] tem= new Object[str.length+add];   
            str=tem;   
        }   
        str[count-1]=e;   
    }   
       
// 获得数组长度
  
    public int size(){   
        return count;   
    }   
       
//  向数组中插入元素  
 
    public void insert(int index,E e){   
        if(index>count||index<0){   
            System.out.println("下角标越界");   
            return;   
        }    
        for(int i=count-1;i>=0;i--){   
            if(i!=index-1){   
             str[i+1]=str[i];   
                continue;   
            }   
            str[index]=e;   
            count++;   
            return;   
        }   
    }   
       
// 删除数组中指定的元素  

    public void delete(int index){   
        if(index>count||index<0){   
            System.out.println("下角标越界");   
            return;   
        }    
        for(;index<count;index++){   
            initstr[index]=initstr[index+1];   
        }   
        count--;   
    }           
}  

 

链表:

     链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现。相对于线性表顺序结构,链表比较放表插入和删除。

      队列也是一个存放东西的容器。但队列的使用比数组、链表更加灵活。一个完善的队列可以很方便的实现添加、删除、更改、获得长度、插入、查找等操作。因此通过把数组和链表转化为队列,可以实现对数组和链表的优化,增强其实用性。

 

一个简单链表的实现首先定义一个结点类:

 

/**
 * 定义一个结点类
 */
public classMyNode {

	private E data;
	private MyNode next;
	
	public void setdata(E e){
		this.data=e;
	}
	
	public void setnext(MyNode next){
		this.next=next;
	}
	
	public E getdata(){
		return data;
	}
	
	public MyNode getnext(){
		return next;
	}
}

 

 

 

 

 

定义一个以链表为基础的队列

 

 

 

 

 

/**  
 * 定义一个以链表为基础的队列  
 */  
public class LinkList{   
   
    MyNode root;   
    private MyNode last;   
       
    public void setroot(MyNode e){   
        root=e;   
    }   
       
//  向链表中添加元素  
 
    public void add(E e){   
        if(root==null){   
            root=new MyNode();   
            root.setdata(e);   
            last=root;   
        }else{   
            MyNode tem=new MyNode();   
            tem.setdata(e);   
            last.setnext(tem);   
            last=tem;   
        }   
    }   
       
// 获得链表的长度  
    public int size(){   
        if(root!=null) {   
            int t=1;   
            MyNode tem=root.getnext();   
            while(tem!=null){   
                tem=tem.getnext();   
                t++;   
            }   
            return t;   
        }   
        return 0;   
    }   
       
//  在指定位置插入结点  
    public void insert(int index,E e){   
       MyNode newNode=new MyNode();   
        if(index==1){   
            newNode.setdata(e);   
            newNode.setnext(root);   
            root=newNode;   
        }else{   
            MyNode  tem=root;   
            for(int i=2;i<index;i++){   
                tem=tem.getnext();   
            }   
            newNode.setdata(e);   
            newNode.setnext(tem.getnext());   
            tem.setnext(newNode);   
        }   
           
    }   
       
// 删除指定位置的结点  
    public void delete(int index){   
        if(index==1) root=root.getnext();   
        else{   
            MyNode tem=root;   
            for(int i=2;i<index;i++){   
                tem=tem.getnext();   
            }   
            tem.setnext(tem.getnext().getnext());   
        }   
    }          
}  

 

 

 

so,that's all.thank you for browsing!

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics