当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

数组队列总结

发表于: 2015-06-14   作者:沐刃青蛟   来源:转载   浏览:
摘要:       数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。      以下是数组队列的功能实现代码:   import List.Student; public class

 

    数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。

 

   以下是数组队列的功能实现代码:

 

import List.Student;

public class ArrayList <E> {
	
	private Object[] array;
	private int size;
	private int addNum;
	
	public int getSize()
	{
		return size;
	}
	//构造函数一
	public ArrayList(int addNum)
	{
		this.addNum=addNum;
		size=0;
		array = new Object [addNum];
	}
	//构造函数二
	public ArrayList()
	{
		/*
		 *   this的三种用法 :
		 *      1.调用属性 :    this.属性名
		 *      2.调用方法 :    this.方法名
		 *      3.调用构造方法: this.(实参)
		 */
		//调用构造函数一  
		this(5);
	}
	//增加元素
	public void add(E elem)
	{
		//判断是否越界(实现不受长度控制的关键)
		if(size==array.length)
		{
			//越界则创建新数组
			Object []temp=new Object[addNum+size];
			//复制元素到新数组中
			for(int i=0;i<array.length;i++)
			{
				temp[i]=array[i];
			}
			//指向新数组名,便可以继续使用array了
			array=temp;
		}
		array[size]=elem;
		//修改大小
		size++;
	}
	//删除
	public void remove(int index)
	{
		//判断
		if(index>=0&&index<size){
			//修改大小
			size--;
			//index后面的元素向前移动一位
			for(int i=index;i<size;i++)
			{
				array[i]=array[i+1];
			}
		}
	}
	//修改
	public void change(int index,E elem)
	{
		//判断
		if(index>=0&&index<size)
			array[index]=elem;     //把值给要改变的位置的元素
	}
	//查找
	public  void find(E elem)
	{
		//记录下标位置
		int index=0;
		//判断有无此元素的标志
		int flag=0;
		//遍历寻找
		for(int i=0;i<size;i++)
		{
			if(array[i].equals(elem))
			{
				//找到就输出
				System.out.println("index="+index);
				//记录标志
				flag=1;
			}
			index++;
		}
		//判断有无
		if(flag==0)
			System.out.println("无此元素");
	}
	//插入
	public void insert(int index,E elem)
	{
		//判断
		if(index>=0&&index<size){
			//判断是否越界
			if(size==array.length)
			{
				//越界则创建新数组
				Object []temp=new Object[addNum+size];
				//遍历复制元素
				for(int i=0;i<array.length;i++)
				{
					temp[i]=array[i];
				}
				//指向新数组
				array=temp;
			}
			//修改大小
			size++;
			//index 后面的元素都向后移动一位
			for(int i=size-2;i>=index;i--)
			{
				array[i+1]=array[i];
			}
			//index位置的值为插入的值
			array[index]=elem;
		}
	}
	//输出
	public void showInfo()
	{
		for(int i=0;i<size;i++)
		{
			System.out.print(array[i]+"  ");
		}
		System.out.println();
	}
	//递归法输出
	public void showInfo2(int size)
	{
		//终止条件
		if(size==1)
		{
			System.out.print(array[this.size-size]+"  ");
		}
		else 
		{
			System.out.print(array[this.size-size]+"  ");
			showInfo2(size-1);
		}
	}
	
	public void showInfo2()
	{
		showInfo2(this.size);
		System.out.println();
	}
	
	public static void  main(String [] args)
	{
		ArrayList <Student> list = new ArrayList<Student>();
		for(int i=0;i<10;i++)
		{
			list.add(new Student("学生"+(i)));
		}
//		System.out.println("size="+list.getSize());
//		list.showInfo2();
//		list.remove(0);
//		System.out.println("size="+list.getSize());
//		list.showInfo();
//		list.change(5, new Student("qinglong"));
//		System.out.println(list.getSize());
//		list.showInfo();
//		list.find(new Student("学生0"));
//		list.insert(0, new Student("qwerty"));
//		System.out.println(list.getSize());
		list.showInfo();
	}
	
}


 

     学生类如下:

 

public class Student {
	
	private String name;
	//构造函数
	public Student(String name)
	{
		this.name=name;
	}
	//重写toString方法
	public String toString()
	{
		return name;
	}
	//重写eqauls方法
	public boolean eqauls(Student stu)
	{
		return  name.equals(stu.name);
	}
	
}

 

 

其中    调用构造方法: this.(实参)   也是第一次碰到。

 

     我的这个数组对列虽然实现了,但有个缺陷,就是我所有的方法都是void类型。这样当我要用到某些东西的时候,可能就不行了。所以其中一些方法应该return一些东西。

 

 

 

 

 

数组队列总结

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1.数组的优点和缺点 优点: 数组是容器 数组的存储空间是连续的。 数组的存储访问速度快:可以直接
  用数组实现的队列,也叫循环队列。就是定义一个数组,用两个下标front,rear表示队头和队尾。当
【项目 - 队列数组】   创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个
在介绍数组队列之前我想先介绍一下数组是为何物,数组是数据的一中存储结构,其定义为: 数组类型[]
数组队列 队列这个名词,字面上除了让人想着他可能是军训的时候我们排着的一对或一列之外,没有别的
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:
/* *Copyright (c) 2015 烟台大学计算机与控制工程学院 *All right reserved. *标题:数据结构实践—
问题及代码: /*2015,烟台大学计算机与控制工程学院 *作者:桑立 *完成日期:2015年10月14日 *问题
//队列(数组模拟) class Queue{ private int[] queue; //队列函数 int length; int head; //头指
/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第七周 项目
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号