#include"SeqList.h"
using namespace std;
//创建链表
bool SeqList::Init()
{
maxsize = 100; last = -1;
data = new int[maxsize]; //创建顺序表存储数组
if (data == NULL) { //动态分配失败
cerr << "存储分配错误!" << endl;
exit(1);
}
cout << "请输入任意个整数(<100,@表示结束)" << endl;
/*int num;
while (cin >> num && num != '@') {
sqList.Insert(sqList.GetSize() + 1, num);
}*/
int num;
while (cin >> num) {//顺序表赋值
data[++last] = num;
if (cin.peek() == '@') {//结束符
cin.ignore();
break;
}
}
return true;
}
bool SeqList::Insert()
{
int i, x;
cout << "插入整数\n请输入您想插入的位置i(0<=i<=100)" << endl;
cin >> i;
cout << "请输入您想插入的整数" << endl;
cin >> x;
//判断插入位置是否有效(i>=1)
if (i<1 || i>last + 2)//位置不合理
return false;
if (last + 1 >= maxsize)//表满
return false;
for (int j = last; j >= i - 1; j--) {
data[j + 1] = data[j];
}
data[i - 1] = x;
//忘写了
last++;
return true;
}
//删除第i个元素
bool SeqList::Delete(int i, int& x)
{
//表空不能删除
if (last <= -1)
return false;
//不合理的位置,不能删除
if (i <= 0 || i > last + 1)
return false;
for (int j = i; j <= last; j++) {//从前往后,元素前移
data[j - 1] = data[j];
}
//忘写了
last--;
return true;
}
//删除多个元素(时间复杂度为o(n^2))
//bool SeqList::Remove(int& x) {
//for (int i = last; i >= 0; i--) {//必须要从后往前删除,从前往后会导致删除后元素前移,会跳过某些元素
// if (data[i] == x) {
// for (int j = i; j < last; j++) {
// data[j] = data[j + 1];
// }
// }
// last--;
//}
//return true;
//}
//按元素值删除多个元素
bool SeqList::Remove()
{
cout << "请输入您想删除的元素" << endl;
int x;
cin >> x;
int* tempo = new int[maxsize];//创建临时数组
int index = 0;//新数组的下标
for (int i = 0; i <= last; i++) {
if (data[i] != x) {
tempo[index] = data[i];// 将不等于x的元素复制到临时数组
index++;
}
}
delete[]data;//释放原表内存
data = tempo;//重新赋值给原表
last = index;//更新最后一个元素的索引
return true;
}
//获取第i个元素
bool SeqList::getData(int i, int& x)
{
//异常处理
if (i<0 || i>last)
return false;
x = data[i];
return true;
}
int SeqList::Search(int& x)
{
for (int i = 0; i <= last; i++) {
if (data[i] == x)
return i + 1;//若找到,则返回是第几个元素
}
//没找到,返回异常值
return 0;
}
// 获取当前元素数量
int SeqList::GetLast() {
return last;
}
//显示元素
void SeqList::Display() {
for (int i = 0; i <= last; i++) {
cout << data[i] << " ";
}
cout << "h"<<endl;
}
//析构函数没实现,报错 链接错误,我服了
SeqList::~SeqList() {
delete[] data;
}
第一个问题:创建表之后,每次第一个元素都没有。刚刚运行了一下,突然又可以了。什么鬼啊
第二个问题:

数组执行删除之后输出,会出现一个乱码。