这里使用数组实现的顺序表
因为用c语言写过了,所以这里只是简单的实现了一下功能
public class SqList {
int maxsize=100;//顺序表最大长度
int[] elemtype;//数组
int length;//顺序表长度
//构造一个空的顺序表
public SqList() {
this.elemtype = new int[maxsize];
this.length = 0;
}
//插入
public boolean insert(int i,int e) {
if(i<1||i>length) {
System.out.println("插入位置错误");
return false;
}
if(length>=maxsize) {
System.out.println("位置已满");
}
int j;
for(j=length;j>=i;j--) {
this.elemtype[j]=this.elemtype[j-1];
}
this.elemtype[i-1]=e;
length++;
return true;
}
//删除
public boolean delete(int i) {
if(i<1||i>length) {
System.out.println("删除位置错误");
return false;
}
int j;
for(j=i;j<length;j++) {
this.elemtype[j-1]=this.elemtype[j];
}
length--;
return true;
}
//遍历
public void list() {
int i;
for(i=0;i<length;i++) {
System.out.println("第"+(i+1)+"个元素是"+this.elemtype[i]);
}
}
}
顺序表的合并
package cn.edu.cdu.zb;
//顺序表的合并
/*已知线性表la和lb中的数据元素按值非递减有序排列,
现将la和lb合并为lc,数据元素按值非递减有序排列
la=(3,5,8,11)
lb=(2,6,8,9,11,15,20)
*/
public class SqlistTest {
public static void main(String[] args) {
SqList LA=new SqList();
LA.elemtype= new int[]{3,5,8,11};
LA.length=4;
SqList LB=new SqList();
LB.elemtype= new int[]{2,6,8,9,11,15,20};
LB.length=7;
SqList LC=new SqList();
int i=0;
int j=0;
int k=0;
while(i<LA.length&&j<LB.length) {
if(LA.elemtype[i]<LB.elemtype[j]) {
LC.elemtype[k]=LA.elemtype[i];
i++;
}else {
LC.elemtype[k]=LB.elemtype[j];
j++;
}
k++;
}
while(i<LA.length) {
LC.elemtype[k]=LA.elemtype[i];
i++;
k++;
}
while(j<LB.length) {
LC.elemtype[k]=LB.elemtype[j];
k++;
j++;
}
LC.length=k;
LC.list();
}
}