数据结构和自定义队列的实现

[color=darkred][/color]百度百科中对数据结构的定义:“数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。”
一般而言,数据结构的选择首先会从抽象数据类型的选择开始。一个设计良好的数据结构,应该在尽可能使用较少的时间与空间资源的前提下,为各种临界状态下的运行提供支持。数据结构可通过编程语言所提供的数据类型、引用及其他操作加以实现。
数据结构对于程序设计是非常重要的。系统构造的关键因素是数据结构而不是算法。在java中,我们用类实现它。我们可以自定义一个队列,这个队列是我们自己确定的数据结构,我们可以运用队列来实现许多数组不能实现的问题。一种数据结构就是一个特殊的类,在这个类中每一个对象就是一个或一组数据,这个类的方法可以实现对数据的增删、修改等操作。在其他类中,就可以通过这个类的对象来调用其中的方法,从而操作数据。
由于java这种语言的特性,类具有良好的封装性,因而数据结构也具有了这一优良特性。这对于程序的可移植性是非常有利的。
下面具体写自定义队列的实现
/**********************华丽的分割线*******************************************/

package array1;

/**
* 作者:尹定宇
* 时间:2011.3.10
* 自定义队列的接口
**/
public interface QueueInterface {

/**
* 在队列中增加一个元素
*
**/
public void add(String s);

/**
* 根据下标获取某个元素的值
*
**/
public String get(int index);

/**
* 在队列中插入一个元素
*
**/
public void insert(int index,String s);

/**
*在队列中根据下标移除一个元素
*
**/
public void remove(int index);

/**
* 在队列中根据下标修改一个元素
*
**/
public void modify(int index,String s);

/**
* 获得队列中元素的个数
*
**/
public int size();

}
/*********************华丽的分割线***************************/

package array1;

public class QueueImp implements QueueInterface{

//定义一个长度为零的初始数组
String arr[] = new String[0];
@Override
public void add(String s) {
//定义一个新数组,长度是原来数组的长度加一
String dest[] = new String[arr.length+1];
//将新放入的元素放在最后一个下标位置
dest[arr.length] = s;
//将原来数组的元素桉顺序拷贝到新数组中
for(int i=0;i<arr.length;i++){
dest[i] = arr[i];
}
arr = dest;
}

@Override
public String get(int index) {
//取得要取出元素对应的下标
String str = arr[index];
return str;
}

@Override
public void insert(int index, String s) {
//定义一个新数组,长度是原来的数组长度加一
String dest[] = new String[arr.length+1];
//将要修改的元素之前的元素保持原味
for(int i=0;i<=index;i++){
dest[i] = arr [i];
}
//将要插入元素以后的元素都移动到他的下一个下标位置
for(int i=index;i<arr.length;i++){
dest[i+1] = arr[i];
}
//插入新元素
dest[index] = s;

arr =dest;

}

@Override
public void modify(int index, String s) {
// 修改对应下标的元素
arr[index] = s;

}

@Override
public void remove(int index) {
//新建一个数组,长度是原来数组长度减一
String dest[] = new String[arr.length-1];
//将要修改的元素之前的元素保持原味
for(int i=0;i<=index;i++){
dest[i] = arr [i];
}
//将要修改的元素之后的元素都移动到它的前一个下标位置
for(int i=index+1;i<arr.length;i++){
dest[i-1] = arr[i];
}

arr = dest;
}

@Override
public int size() {
//获得队列中元素的个数
int size = arr.length;
return size;
}

}
/********************华丽的分割线***************************/
以上是自定义队列的实现,下面写一个main函数展示一下
/*********************华丽的分割线**************************/

package array1;

public class arrayTest {
//定义主函数
public static void main(String [] args){

//创建一个数组对象
String arr[] ={"说","了","你","不","会","信"};

//创建一个自定义队列对象
QueueImp hh = new QueueImp();

//给数组添加十个元素
for(int i=0;i<arr.length;i++){
String s = arr[i];
hh.add(s);
}
//遍历队列
for(int i=0;i<hh.size();i++){
String s = hh.get(i);
System.out.print(s+"\t");
}
System.out.println();
//删除一个元素
hh.remove(3);
//遍历队列
for(int i=0;i<hh.size();i++){
String s = hh.get(i);
System.out.print(s+"\t");
}
System.out.println();
//添加两个元素
hh.add("才");
hh.add("怪");
//遍历队列
for(int i=0;i<hh.size();i++){
String s = hh.get(i);
System.out.print(s+"\t");
}
System.out.println();
//插入一个元素
hh.insert(0,"他");
//遍历队列
for(int i=0;i<hh.size();i++){
String s = hh.get(i);
System.out.print(s+"\t");
}
System.out.println();
//修改一个元素
hh.modify(2, ":");
//遍历队列
for(int i=0;i<hh.size();i++){
String s = hh.get(i);
System.out.print(s+"\t");
}
System.out.println();
}

}
/*******************华丽的分割线*****************************/
至此简单的队列就已经实现了,我们已经可以用它解决许多问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值