Java数据结构-线性表的设计与实现(头歌平台,详细注释)

第1关:顺序表的实现之增删功能

//添加一个元素到末尾
elements[size++] = item;//数组个数++,保存新元素
//添加一个元素到指定位置index
for (int i = size; i > index; i--) //寻找要插入的位置
{
    elements[i] = elements[i - 1];//将要插入位置后的所有元素向后移动一位
}
elements[index] = item;//当前位置添加插入元素
size++;//元素个数+1
//删除指定位置index的元素,并返回被删除的元素
int oldVal = elements[index];//保存要删除元素
for (int i = index; i < size - 1; i++) //寻找要删除的位置
{
    elements[i] = elements[i + 1];//删除元素所有删除位置以后的元素向前移动一位
}
--size;//元素个数-1
return oldVal;//返回要删除元素

第2关: 顺序表的实现之查询功能

//返回表中下标为index的元素
return elements[index];//直接返回该数组储存的元素

第3关:单链表的实现之增删功能

//添加到链表尾部
Node x = last;//保存尾结点
Node node = new Node(item, null);//创建新结点,并赋值元素
last = node;//尾结点变为新结点
if (first.next == null) //如果第一个结点(相当于头结点)指向空就表示没有元素
{//首次添加
      first.next = node;//第一个结点指向新结点
} 
else 
{
      x.next = node;//尾结点指向新结点
}
++size;//元素个数+1
//添加数据item到指定位置index
Node x = first;//保存第一个结点
while (index-- > 0) //个数减少,当为0时代表找到要添加的位置的前一个结点
{
     x = x.next;//保存当前结点
}
Node node = new Node(item, null);//创建新结点,并赋值元素
if (null == first.next) //头结点指向为空代表没有数
{//首次添加
     last = node;//尾结点指向新结点
}
node.next = x.next;//新结点指向要添加位置的前一个结点的指向
x.next = node;//将要添加位置的前一个结点的指向为新结点
++size;//保存元素个数
//删除指定位置index处的元素并返回, index从0开始
Node g = first;//保存第一个结点
while (index-- > 0) //个数减少,当为0时代表找到要删除的位置的前一个结点
{
     g = g.next;//保存当前结点
}
Node d = g.next;//保存需要删除的元素
if (d == last)
{//删除最后一个元素
     last = g;//则让最后一个结点变为要删除的位置的前一个结点
}
g.next = d.next;//让要删除的位置的前一个结点的指向要删除元素的下一个结点(即跳过要删除的元素直接指向下一个,即为删除操作)
--size;//元素个数-1
return d.item;//返回要删除元素

第4关:单链表的实现之查询功能

//获取链表中第index个元素
Node l=first;//保存第一个结点
for(int i=0;i<=index;i++)//寻找要获取的元素的位置
{
   l=l.next;//保存当前结点
}
return l.item;//返回要获取元素

关于结点指向null,释放结点内存的操作这里可以不用,除非需要控制内存

你可能感兴趣的:(java头歌平台,数据结构,java)