一、顺序表
##顺序表的实现
//顺序表
class SequenceList{
int data[];
int len;
}
1. 插入操作
//插入
public boolean insert(int p,int k) {
if(p>len&&p<0)
return false;
if(len>data.length)
return false;
for (int i = len; i > p; i--) {
data[i]=data[i-1];
}
data[p]=k;
len++;
return true;
}
2. 删除操作
//删除
public boolean delete(int p) {
if(p<0&&p>len) {
return false;
}
if(len>data.length) {
return false;
}
for(int i=p;i<len;i++) {
data[i]=data[i+1];
}
len--;
return true;
}
3. 按值查找操作
//查找
public int findElem(int k) {
for (int i = 0; i < len; i++) {
if(data[i]==k)
return i;
}
return 0;
}
4. 时间复杂度
题目巩固:
①在一个长度为n的顺序表中删除第i个元素时,需要向前移动()个元素。
②找到顺序表中最小值,并打印;
③将顺序表中所有元素逆置;
④删除有序顺序表中所有重复的值,使得表中所有元素的值均不相同。
//删除有序顺序表中的重复元素
public void deleteSame() {
for (int i = 0; i < len-1; i++) {
if(data[i]==data[i+1]) {
delete(i+1);
i--;
}
}
}
⑤删除顺序表中所有重复的值,使得表中所有元素的值均不相同。
//删除顺序表中的重复元素
public void deleteSame2() {
int[] arr=new int[23];
for (int i = 0; i < len; i++) {
arr[data[i]]++;
}
System.out.println();
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=0)
System.out.print(i+" ");
}
}