抄代码DAY5

今天还是继续java的数据结构,对于顺序表的基本操作:增删查。

1.查找

利用for循环进行遍历查找,找的到返回到元素的位置,找不到的返回-1。

	public int indexOf(int paraValue) {
	   	int tempPosition = -1;
        //先将变量设置为-1
	   	for (int i = 0; i < length; i++) {
	   		if (data[i] == paraValue) {
	   			tempPosition = i;//元素位置
	   			break;//找到元素,跳出循环
	   		} 
	   	} 

	   	return tempPosition;//返回值
	   }

2.插入

要判断两种情况:(1)是否顺序表已经存满了;(2)是否待插入位置不在我们的顺序表范围内;

要做出对应的判断,增强代码的健壮性。

函数中设置了两个参数:待插入位置 和 元素值。

输入值正确的情况下,从尾向头遍历找到待插入位置,并把其后每一个元素向后移动一个单位长度;最后把长度+1。因为队首位置记为0,所以队尾处位置为length-1。

	//插入
	   public boolean insert(int paraPosition, int paraValue) {
		   	if (length == MAX_LENGTH) {
		   		System.out.println("List full.");
		   		return false;
		   	} // 当顺序表长度达到最大长度,表示表满不能再插入
		   	if ((paraPosition < 0) || (paraPosition > length)) {
		   		System.out.println("The position " + paraPosition + " is out of bounds.");
		   		return false;
		   	} // 当输入的插入位置,大于最大长度或小于0,报错


		   	for (int i = length; i > paraPosition; i--) {
		   		data[i] = data[i - 1];
		   	} // 从表尾开始遍历查找,并将所有元素依次后移一个单位长度

		   	data[paraPosition] = paraValue;
		   	length++;//在待插入位置插入,并将表长+1

		   	return true;
		   }

3. 删除

写函数,输入参数:删除元素的位置(实际上在物理上是待删除元素后一个元素的位置)。

先判断参数是否在顺序表范围内,不在就警告。再利用for循环遍历,从待删除元素后一个元素的位置开始,依次向前覆盖。最后将表长-1。

//删
	   public boolean delete(int paraPosition) {
		   	if ((paraPosition < 0) || (paraPosition >= length)) {
		   		System.out.println("The position " + paraPosition + " is out of bounds.");
		   		return false;
		   	} // 不在元素范围内时,警告超出范围

		   	// 从头到尾的遍历
		   	for (int i = paraPosition; i < length - 1; i++) {
		   		data[i] = data[i + 1];//从删除元素位置开始依次向前覆盖
		   	} 

		   	length--;//将顺序表长度-1

		   	return true;
	   }

下面是对上面写的函数的调用以及验证。

	public static void main(String args[]) {
		int[] tempArray = {2,4,6,8};
		SequentialList tempFirstList = new SequentialList(tempArray);
		System.out.println("Initialized, the list is: " + tempFirstList.toString());
		System.out.println("Again, the list is: " + tempFirstList);

		tempFirstList.reset();//调用reset方法
		System.out.println("After reset, the list is: " + tempFirstList);
		
		int tempValue = 4;
	   	int tempPosition = tempFirstList.indexOf(tempValue);
	   	System.out.println("The position of " + tempValue + " is " + tempPosition);

	   	tempValue = 5;
	   	tempPosition = tempFirstList.indexOf(tempValue);
	   	System.out.println("The position of " + tempValue + " is " + tempPosition);

	   	tempPosition = 2;
	   	tempValue = 5;
	   	tempFirstList.insert(tempPosition, tempValue);
	   	System.out.println(
	   			"After inserting " + tempValue + " to position " + tempPosition + ", the list is: " + tempFirstList);

	   	tempPosition = 8;
	   	tempValue = 10;
	   	tempFirstList.insert(tempPosition, tempValue);
	   	System.out.println(
	   			"After inserting " + tempValue + " to position " + tempPosition + ", the list is: " + tempFirstList);

	   	tempPosition = 3;
	   	tempFirstList.delete(tempPosition);
	   	System.out.println("After deleting data at position " + tempPosition + ", the list is: " + tempFirstList);

	   	for (int i = 0; i < 8; i++) {
	   		tempFirstList.insert(i, i);
	   		System.out.println("After inserting " + i + " to position " + i + ", the list is: " + tempFirstList);
	   	} // Of for i

	   	tempFirstList.reset();
	   	System.out.println("After reset, the list is: " + tempFirstList);
	   }// Of main

其结果为:

 顺序表的基本操作告一段落。后续更新链表、堆栈、队列、图、树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值