头文件:list.h
代码:
#include<iostream>
using namespace std;
const int MAXN = 1000;
class List {
private: //私有数据
int data[MAXN];
int length;
public: //公有函数
List() {
length = 0;
}
List(int a[10], int n) { //外部接口,用于从外部接收参数,并存储到私有数据
if(n > MAXN) throw "参数非法";
for(int i = 0; i < n; i++) {
data[i] = a[i];
}
length = n;
}
~List(){ }; //析构函数记得加大括号"{}"
int getLength() { //返回线性表当前长度
return length;
}
int getData(int i) { //查找指定位置的数据
if(i < 1 || i > length) throw "查找位置非法";//边界判断
else return data[i];
}
int licate(int x) { //确定指定数据的位置
for(int i = 0; i < length; i++) {
if(data[i] == x) return i+1;
}
return 0;
}
void insert(int i, int x) { //在i号位插入数据
if(length >= MAXN) throw "上溢";
if(i < 1 || i > length+1) throw "位置异常"; //判断异常情况
for(int j = length; j >= i; j--) { //先将后面的数据整体后移,再在腾出的空位插入数据
data[j] = data[j-1];
}
data[i-1] = x;
length++; //线性表长度+1
}
int remove(int i) { //删除指定位置的数据
if(length == 0) throw "下溢";
if(i < 1 || i > length) throw "位置异常";
int x = data[i-1];
for(int j = i; j < length; j++) {
data[j-1] = data[j];
}
length--; //线性表长度-1
return x;
}
bool empty() { //判断线性表是否为空
if(length == 0) return true;
else return false;
}
void printList() { //输出线性表中所有数据
for(int i = 0; i < length; i++) {
cout << data[i] << endl;
}
}
};
主函数:
#include"list.h" //引用的自定义头文件要用双引号,加上.h后缀
#include<iostream>
using namespace std;
int main() {
int b[10];
for(int i = 0; i < 10; i++) {
cin >> b[i];
}
List seqList(b, 10); //调用有参构造函数,直接用数组名,不加"[]"
seqList.printList();
seqList.insert(5, 30);
seqList.printList();
return 0;
}