您的位置:首页 > 理论基础 > 数据结构算法

顺序表

2016-07-15 08:08 330 查看
数据结构——顺序表结构


// 定义接口
public interface IList {

//  i的 取值范围是  0<=i<length()-1
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 remove(int i) throws Exception;

public int indexOf(Object x);

public void display();

}

public class SqList implements IList {

private Object[] ListElem;   //  线性表的存贮空间
private int curLen;     //  线性表的实际长度

// 构造函数
public SqList(int Maxsize)
{
curLen = 0;
ListElem = new Object[Maxsize];   // 为顺序表分配Maxsize个存储单元
}

@Override
public void clear() {
// TODO 自动生成的方法存根

curLen = 0;
}

@Override
public boolean isEmpty() {
// TODO 自动生成的方法存根
//      return false;
return curLen == 0;

}

@Override
public int length() {
// TODO 自动生成的方法存根
return curLen ;
}

// 该方法是读取线性表中的第i个元素,并返回该值
// 其中i的取值范围是: 0<=i <=length()-1 ,否则会抛出异常
@Override
public Object get(int i) throws Exception {
// TODO 自动生成的方法存根
if(0<i||i>curLen-1)

throw new Exception("第"+i+"个元素不存在");

return ListElem[i];
}
// 线性表插入
@Override
public void insert(int i, Object x)throws Exception {
// TODO 自动生成的方法存根
// 1.当线性表已经满了则要抛出异常
// 2.当i的位置不合法时也要抛出异常
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;   // 中间插入x
curLen++;
}
//  线性表的删除
@Override
public void remove(int i) throws Exception{
// TODO 自动生成的方法存根
//   位置不合法,就要抛出异常。
if(i<0||i>curLen)
throw new Exception("删除的位置不合理");
for(int j = i; j<curLen-1;j++)
ListElem[j] = ListElem[j+1];
curLen++;

}

//  顺序表的查找,主要查找满足指定条件的数据元素初次出现的位置。
@Override
public int indexOf(Object x) {
// TODO 自动生成的方法存根
int j = 0;
// 关键代码: !ListElem[j].equals(x)
while(j<curLen&&!ListElem[j].equals(x))

j++;
if(j<curLen)
return j;
else
return -1;
}

// 输出线性表所有元素
@Override
public void display() {
// TODO 自动生成的方法存根
for(int j = 0;j<curLen;j++)
System.out.print(ListElem[j]+"  ");
System.out.println(" ");

}

}

// 题目:题目: 从一下顺序表中找出元素'z'首次出现的位置
// {'a','z','d','m','z'}

public class Example2_1 {
public static void main(String[] args) throws Exception
{
SqList L = new SqList(10);
L.insert(0, 'a');
L.insert(1, 'z');
L.insert(2, 'd');
L.insert(3, 'm');
L.insert(4, 'z');

int order = L.indexOf('z');

if(order != -1)
System.out.println("顺序表中第一次出现的值为'z'的数据的位置是:"+order);
else
System.out.println("顺序表中不包含值为'z'的数据元素");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构