大连东软信息学院数据结构III实验报告

  • 格式:doc
  • 大小:132.00 KB
  • 文档页数:7

实验报告(一)
实验过程
任务一:
下面5个操作任选1个完成,写出代码。

1 修改顺序表insert方法中的for循环语句,初始化j=curLen-1实现插入功能并测试
选1
package三级项目Text;
public class Demo {
public Object[] listElem;
public int curLen;
public Demo(){
listElem=new Object[50];
}
public void insert(int i,Object x)throws Exception{
if(curLen==listElem.length)
throw new Exception("顺序表已满");
if(i<0||i>curLen)
throw new Exception("插入位置不合法");
for(int j=curLen;j>i;j--)
listElem[j]=listElem[j-1];
listElem[i]=x;
curLen++;
}
public int indexOf(Object x){
int j;
for(j=0;j<curLen&&!listElem[j].equals(x);j++);
if(j<curLen)
return j;
else
return -1;
}
}
package三级项目Text;
public class TestDemo {
public static void main(String[]args)throws Exception{
Demo L=new Demo();
L.insert(0, "系");
L.insert(1, "专业");
L.insert(2, "Text");
L.insert(3, "123123");
L.insert(4, "学号");
int order=L.indexOf("学号");
if(order!=-1)
System.out.println("顺序表中出现的值为’学号‘的数据元素的位置为:
"+order);
else
System.out.println("此顺序表中不包含值为'学号'的数据元素");
}
}
2 将顺序表查找方法indexOf(Object x)中的while循环修改为for循环并测试
3 实现顺序表的输出方法display(),并测试
4 定义indexOf(int i,Object x)方法,实现从顺序表第i个位置开始查找x对象第一次出现的位置,并测试
5 定义indexOf2(Object x)方法,实现从顺序表逆序查找x对象第一次出现的位置,并测试
任务二:
下面3个操作任选1个完成,写出代码。

1 编写一个单链表类的成员方法,实现数据元素ai与ai-1交换。

2 编写一个单链表类的成员方法,实现将第i个结点的数据值修改为x。

3 编写一个单链表类的成员方法,实现删除所有单链表中值为x的结点。

选3
public interface Ilist {
public void clear();
public boolean isEmpty();
public int length();
public Object get(int i)throws Exception;
public void insert(int i,Object x)throws Exception;
public void removeAll(Object x);
public int indexOf(Object x);
public void display();
}
package直接插入排序;
public class LinkList implements Ilist{
public Node head;
public LinkList(){
head=new Node();
}
public LinkList(int n,boolean Order)throws Exception{ this();
if(Order)
create1(n);
else
create2(n);
}
private void create1(int n) {
}
private void create2(int n) {
}
public void clear(){
head.data=null;
head.next=null;
}
public boolean isEmpty(){
return head.next==null;
}
public int length(){
Node p=head.next;
int length=0;
while(p!=null){
p=p.next;
++length;
}
return length;
}
public Object get(int i)throws Exception{
Node p=head.next;
int j=0;
while(p!=null&&j<i){
p=p.next;
++j;
}
if(j>i||p==null){
throw new Exception("第"+i+"个元素不存在");
}
return p.data;
}
public void insert(int i,Object x)throws Exception{ Node p=head;
int j=-1;
while(p!=null&&j<i-1){
p=p.next;
++j;
}
if(j>i-1||p==null)
throw new Exception("插入位置不合法");
Node s=new Node(x);
s.next=p.next;
p.next=s;
}
public void removeAll(Object x){
Node p=head.next;
Node q=head;
while(p!=null){
if(p.data.equals(x)){
q.next=p.next;
}
else
q=p;
p=p.next;
}
}
public int indexOf(Object x){
Node p=head.next;
int j=0;
while(p!=null&&p.data.equals(x)){
p=p.next;
++j;
}
if(p!=null)
return j;
else
return -1;
}
public void display(){
Node node=head.next;
while(node!=null){
System.out.print(node.data+" ");
node=node.next;
}
System.out.println();
}
}
public class Node {
public Object data;
public Node next;
public Node(){
this(null,null);
}
public Node(Object data){
this(data,null);
}
public Node(Object data,Node next){
this.data=data;
this.next=next;
}
}
public class TestDemo {
public static void main(String[]args) throws Exception{ LinkList L=new LinkList();
L.insert(0, "系");
L.insert(1,"专业");
L.insert(2, "Text");
L.insert(3, "班级");
L.insert(4, "学号");
L.display();
L.removeAll("专业");
L.display();
}
}
实验总结。