主要是关于一些对线性表的操作,包括插入、删除、查询、成串、查找等操作,下面是程序代码:
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());
}
}