一、实验目的和要求
理解和掌握线性表的概念、存储结构及操作要求,体会顺序和链式两种存储结构的特点;根据操作的不同要求,选择合适的存储结构,设计并实现算法,对算法进行时间复杂度和空间复杂度分析。通过实现对线性表各种操作的算法设计,达到掌握数据结构的研究方法、算法设计和分析方法的目的。
熟练运用JAVA语言实现数据结构设计和算法设计,了解程序运行过程中出现的各种错误。不仅要掌握再MyEclipse等集成开发环境中编辑、编译和运行程序的基本技能,还要掌握设置断点、单步运行等程序调试技术,及时发现错误,针对不同的错误,采取不同的手段进行处理。
二、实验题目
1, 比较相等equals(Object obj)
2,返回子表SinglyList<T> subList(begin, end)
三、实验方法与步骤(需求分析、算法设计思路、流程图等)
先创建单链表结点类,需要一个数据域存储数据,和一个地址域引用后继结点。
然后创建单链表类,增加头结点。实现插入删除元素等基本功能,其中返回子表方法为:先创建一个空的单链表,并创建一个指针指向这个新链表头结点,创建另一个指针指向当前链表,移动到begin处开始向新链表拷贝数据,一直到end为止,最后返回新链表。
运用到深拷贝,复制一个新的单链表,equals方法比较两条单链表是否相等,令p,q分别指向两条链表头结点的下一个结点,遍历比较两个结点的数据域是否相等。Sublist方法用插入的方式取出子表,先建一个新的单链表,p指向头指针进行遍历,设定子表头尾为begin和end最后将p得到的begin到end数据插入新的sublist单链表内。
四、实验原始纪录(源程序、数据结构等)
package unit2;
public class Node<T>
{
public T data;
public Node<T>next;
public Node(T data,Node<T>next)
{
this.data = data;
this.next = next;
}
public Node()
{
this(null,null);
}
public StringtoString()
{
return this.data.toString();
}
}
package unit2;
public class SinglyList<T extends Comparable<?super T>> extends Object
{
public Node<T> head;
public SinglyList()
{
this.head=new Node<T>();
}
public SinglyList(T[] values) //构造单链表,values数组提供元素
{