一、数组
数组的定义
格式一:
元素类型[] 数组名 = new 元素类型[元素的个数或数组长度]
示例:
int[]array1=newint[2];array1[0]=1;array1[1]=2;array1[2]=3;
格式二:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
示例:
int[]arr=newint[]{3,5,1,7};int[]arr={3,5,1,7};
注意:给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小。创建数组之后不能修改数组的大小。可以使用length属性获取数组的大小
数组的优缺点
优点
随机访问性强(通过下标进行快速定位)查找速度快
缺点插入和删除效率低(插入和删除需要移动数据)可能浪费内存(因为是连续的,所以每次申请数组之前必须规定数组的大小,如果大小不合理,则可能会浪费内存)内存空间要求高,必须有足够的连续内存空间。数组大小固定,不能动态拓展
二、链表
普及一下
线性表分为顺序存储(顺序表)和链式存储(单链表、双链表、循环链表、静态链表,前面三种指针实现,后面是借助数组实现)
1、单链表
单链表只有一个指向下一节点的指针,也就是只能next
定义单链表
首先定义一个Node类
publicclassNode{protectedNodenext;//指针域 publicintdata;//数据域 publicNode(intdata){this.data=data;}//显示此节点 publicvoiddisplay(){System.out.print(data+" ");}}
接下来定义一个单链表
publicclassLinkList{publicNodefirst;// 定义一个头结点 privateintpos=0;// 节点的位置 publicLinkList(){this.first=null;}// 插入一个头节点 publicvoidaddFirstNode(intdata){Nodenode=newNode(data);node.next=first;first=node;}// 删除一个头结点,并返回头结点 publicNo