继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

慕课网玩转数据结构课程之数组

无心铁憨憨
关注TA
已关注
手记 2
粉丝 6
获赞 5

数组是java语言中支持的一种语法,平时我们只需要知道怎么用就行了,而数据结构这门课就是告诉我们数据在数组中是以怎样的一种形式进行存储,它的增、删、改、查又是如何实现的,这就是知其然也知其所以然,这里主要讲一下个人学习之后的一些理解,也是加深印象的一种手段。

主要说一下增、删、改、查几个方法的实现,我们新建一个类,维护两个成员变量,一个是就是java的数组,一个是size,size表示数组中实际存放的元素个数。在实现中,size主要是指向数组中下一个可以存放元素的位置

add(int index,E e)方法:
有几种,比如在数组的第一个位置添加元素,还有在数组最后的位置添加元素,
这个最后的位置不是指数组容量中最后的位置,而是说size指向的索引位置,
还有在指定的位置添加元素,我们说说最后一种,在指定位置添加元素。

比方我们现有一个数组 [0,1,2,3,4,5,6,7,8,9] 这个时候,我想在索引为0的位置添加一个元素100,那具体是怎么实现呢?我们需要把这个数组中每个元素的位置都往后挪一个位置,应该先从最后一个元素,也就是9开始,9的索引也是9,那么就把9挪到索引为10的位置上,依次类推,整个流程走完之后数组应该是这样子的 【0,0,1,2,3,4,5,6,7,8,9】,然后再把索引为0的位置的元素给替换成100,结果应该是【100,0,1,2,3,4,5,6,7,8,9】,这个时候我们的添加操作就已经完成了,维护一下size,size进行++

remove(int index)方法:
和add()一样,也有几种形式,头部删除,尾部删除,任意位置进行删除,实现思路其实跟add()是相反的,首先我们要找到要删除位置索引的后一个位置,比如你要删除索引为3的元素,那么你这个时候应该找到索引为4的位置,然后用索引为4的元素往前挪一位,覆盖原先索引为3的元素,依次类推,直到数组中最后一个元素也往前挪了一位,这个时候,原先索引为3的元素也就不存在了,我们删除操作也就完成了,维护一下size,进行size–操作就OK了。

还有一个删除数组中存在的所有相同的元素:
removeAllElement(E e);
这个方法在课程中并没有给出具体的实现的代码,而是让我们自己去思考写出,我相信买了这门课程的同学应该大部分都自己实现了这个方法,可能每个人实现的方式都不一样,我经过自己的思考,也是实现了这个方法的,主要思路就是:
先统计出这个元素在数组中出现的次数,然后根据这个次数循环进行删除,我贴一下代码:

public void removeAllElement(int e) {
		int count = findAll(e);
		for(int i = 0 ; i < count ; i ++) {
			removeElement(e);
		}
	}
public int findAll(int e) {//这个方法进行元素出现次数的统计
		int count = 0 ;
		for(int i = 0 ; i < size ; i++) {
			if(data[i] == e)
				count ++ ;
		}
		return count;
	}
//这个方法是根据用户传来的元素,进行查找,如果数组存在这个元素就进行删除
public void removeElement(int e) {
		int index = find(e);
		if(index != -1) 
			remove(index);
	}

哇!!!突然发现老师录制视频是真的好不容易,而且还有大量的ppt动画演示效果,还要组织语言,如何更加通俗易懂,我就打了这么点东西,都感觉花费好长的时间,主要是想着怎么组织语言,虽然我不是讲课,hh,但是万一有人看呢,我希望别人看的懂啊,以后我自己再来看,我也希望自己能看懂,不过我觉得我还是说的挺乱的,不管了!!

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP