Java数据结构线性表中插入、删除、查询、成串、查找等操作

来源:互联网 发布:数控车床编程入门实例 编辑:程序博客网 时间:2024/06/09 05:42

主要是关于一些对线性表的操作,包括插入、删除、查询、成串、查找等操作,下面是程序代码:

SeqLis.java

public class SeqList<T> implements LList<T>
{               //顺序表类,实现线性表接口
private Object[] element;//对象数组,私有成员
    private int len;         //顺序表长度
    
    public SeqList(int size)                 
    {
        this.element = new Object[size];  
        this.len = 0;
    }
    
    public SeqList()                       
    {
        this(64);
    }
    
    public boolean isEmpty()      //判断顺序表是否为空
    {
    return this.len==0;
    }
    
    public int length()     //返回顺序表的长度
    {
        return this.len;
    }
    
    public T get(int i)                 
    {                                         
        if (i>=0 && i<this.len)
            return (T)this.element[i];           
        return null;
    }
    
    public void set(int i, T x)       
    {                                        
        if (x==null)
        return;
        if (i>=0 && i<this.len)
        this.element[i] = x;
        else
        throw new IndexOutOfBoundsException(i+"");
    }
    
    public String toString()         
    {
    String str="(";
    if (this.len>0)
    str += this.element[0].toString();
    for (int i=1; i<this.len; i++)
    str += ", "+this. element[i].toString();
    return str+") ";
    }
    
    public void insert(int i, T x)                   //插入段代码
    {                                          
    if (x==null)
    return;                    
    if (this.len==element.length)           
    {
    Object[] temp = this.element;         
    this.element = new Object[temp.length*2];   
    for (int j=0; j<temp.length; j++)   
    this.element[j] = temp[j];
    }             
    if (i<0)                        
    i=0;
    if (i>this.len)
    i= this.len;
    for (int j=this.len-1; j>=i; j--)    
    this.element[j+1] = this.element[j];
    this.element[i] = x;
    this.len++;
    }
    public void append(T x)            
    {
    insert(this.len, x);
    }
    public T remove(int i)                
    {                                       
    if (this.len==0 || i<0 || i>=this.len) 
    return null;
    T old = (T)this.element[i];
    for (int j=i; j<this.len-1; j++)  
    this.element[j] = this.element[j+1];
    this.element[this.len-1]=null;
    this.len--;
    return old;                   
    }
    public void removeAll()                    
    {
    this.len=0;
    }
    public boolean equals(Object obj)
    {
    if(this==obj)
    return true;
    if(obj instanceof SeqList)
    {
    SeqList<T> list=(SeqList<T>)obj;
    if(this.length()==list.length())
    {
    for(int i=0;i<this.length();i++)
    if(!this.get(i).equals(list.get(i)))
    return false;
    return true;
    }
    }
    return false;
    }
    
    //以下代码属于顺序表的顺序查找内容
    public int indexOf(T key)
    {
    if(key!=null)
    for(int i=0;i<this.len;i++)
    if(this.element[i].equals(key))
    return i;
    return -1;
    }
    public T search(T key)
    {
    int find=this.indexOf(key);
    return find==-1?null:(T)this.element[find];
    }
    public boolean contain(T key)
    {
    return this.indexOf(key)>=0;
    }
}


下面是线性表接口:

LList.java

public interface LList<T>                   //线性表接口
{
boolean isEmpty();   //判断线性表是否为空
    int length();                //返回线性表长度
    T get(int i);                 //返回第i号元素
    void set(int i, T x);     //设置第i号元素值为x
    void insert(int i, T x); //插入x作为第i号元素
    void append(T x);      //在线性表最后插入元素x
    T remove(int i);          //删除第i号元素并返回被删除的元素
    void removeAll();      //删除线性表所有元素
    T search(T key);        //查找,返回首次出现关键字为key的元素。
}

接下来是一些对线性表的操作:

text.java


public class text{
public static void main(String args[])
{
SeqList<String> s=new SeqList<String>(5);
//成串、求长度、判断是否为空
//在下面添加代码
s.toString();
s.length();
s.isEmpty();
System.out.println("s.toString()="+s.toString());
System.out.println("s.length()="+s.length());
System.out.println("s.isEmpty()="+s.isEmpty());

System.out.println("--------------------");
//插入3个字符串、成串、求长度、判断是否为空
//在下面添加代码
s.insert(0, "zhangsan");
System.out.println("s.toString()="+s.toString());
s.insert(1, "lisi");
System.out.println("s.toString()="+s.toString());
s.insert(2, "wangwu");
System.out.println("s.toString()="+s.toString());
System.out.println("s.length()="+s.length());
System.out.println("s.isEmpty()="+s.isEmpty());

System.out.println("----------------------");
//取值、置值、成串、求长度、判断是否为空
//在下面添加代码
s.get(1);
System.out.println("s.get(1)="+s.get(1));
System.out.println("s.toString()="+s.toString());
s.set(1, "zhaoliu");
System.out.println("s.toString()="+s.toString());
System.out.println("s.length()="+s.length());
System.out.println("s.isEmpty()="+s.isEmpty());

System.out.println("----------------------");
//删除、成串、求长度、判断是否为空
//在下面添加代码
s.remove(1);
System.out.println("s.remove(1)="+s.remove(1));
System.out.println("s.toString()="+s.toString());
System.out.println("s.length()="+s.length());
System.out.println("s.isEmpty()="+s.isEmpty());

System.out.println("----------------------");
//清空、成串、求长度、判断是否为空
//在下面添加代码
s.removeAll();
System.out.println("s.toString()="+s.toString());
System.out.println("s.length()="+s.length());
System.out.println("s.isEmpty()="+s.isEmpty());
}
}

0 1
原创粉丝点击