#include <iostream>
#include<windows.h>//exit 头文件
using namespace std;
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
class SqList{
private:
int *elem;//存储空间基址 (可以不一定是int
int length;//顺序表长度
int listsize;//顺序表最大长度
public:
SqList();
~SqList();
void CreatList(int a[],int);//由a数组中的元素建造顺序表
void DispList();
int getLength();
bool searchLocal(int i,int &e);//查找第i个位置的元素值
int searchElem(int e);
bool ListInsert(int i,int e);
bool ListDelete(int i,int&e);// 用e返回元素值
void ReverseList(SqList &L);//翻转顺序表
void emptyList();//置空表
};
SqList::SqList(){
elem = new int[LIST_INIT_SIZE];
if(!elem) exit(-1);//在一些编译器中new分配空间失败会直接报错,无返回值,此判断无意义
listsize = LIST_INIT_SIZE;
length = 0;
}
SqList::~SqList(){
}
//由a数组中的元素建造顺序表(时间复杂度O(n))
void SqList::CreatList(int a[],int n){
length = n;
for(int i=0; i<n; i++)
elem[i] = a[i];
}
//输出顺序表L中所有元素(时间复杂度O(n))
void SqList::DispList(){
for(int i=0; i<length; i++)
cout << elem[i] << " ";
cout << endl;
}
int SqList::getLength(){
return length;
}
//查找第i个位置的元素值(时间复杂度O(1)) 用e来存放元素值 而返回值用来判断查找是否合理
bool SqList::searchLocal(int i,int &e){ //!引用
if(i<1 || i>length) return false;
e = elem[i-1];
return true;
}
//查找元素所在位置(时间复杂度O(n))
int SqList::searchElem(int e){
int i;
for(i=0;i<length;i++)
if(elem[i]==e){
return i+1;
break;//找到第一个位置就行
}
return 0;//表示没找到
}
//顺序表的插入(移动元素数n-i+1)(时间复杂度O(n))
bool SqList::ListInsert(int i,int e){
int k;
if(i<1 || i>length+1)
return false;//插入位置不正确
for(k=length-1;k>=i;k--)
elem[k+1] = elem[k];
elem[i-1]=e;
length++;
return true;
}
//顺序表的删除(时间复杂度O(n))
bool SqList::ListDelete(int i,int&e){
if(i<1 || i>length)
return false;
int k;
e = elem[i-1];//保存删除元素
for(k=i-1;k<length-1;k++)
elem[k]=elem[k+1];
length--;
return true;
}
//翻转顺序表
void SqList::ReverseList(SqList &L){
int temp;
for(int i=0;i<length/2;i++){
int temp = elem[i];
elem[i] = elem[length-i-1];
elem[length-i-1] = temp;
}
}
void SqList::emptyList(){
length=0;
}
int main(){
SqList list1;
int arr[3] = {3,4,5};
list1.CreatList(arr,3);//建表
list1.DispList();//输出表
cout << "list1 length is " << list1.getLength() << endl;
// 求第二个位置的元素
int e;
list1.searchLocal(2, e);
cout <<"The 2 local is elem " << e << endl;
// 查找元素5的位置
cout << "The elem 5 local is " << list1.searchElem(5) << endl;
// 在位置4插入元素6
list1.ListInsert(4, 6);
list1.DispList();
// 在位置1删除数据元素
int a;
list1.ListDelete(1,a);
list1.DispList();
list1.ReverseList(list1);
list1.DispList();
return 0;
}
06-25
541
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-16
07-16
07-16
07-16
07-16
07-16
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交