顺序表VS2022完美运行
#include <iostream>
#include <Windows.h>
#define MAX_SIZE 100
using namespace std;
typedef struct {
int* elems;
int length;
int size;
}Sqlist;
bool initList(Sqlist& L) {
L.elems = new int[MAX_SIZE];
if (!L.elems) {
cout << "内存分配失败!" << endl;
return false;
}
else if (L.elems) {
cout << "初始化成功!" << endl;
L.length = 0;
L.size = MAX_SIZE;
for (int i = 0; i <= MAX_SIZE - 1; i++) {
L.elems[i] = NULL;
}
return true;
}
cout << "未知错误!!" << endl;
return false;
}
void print(Sqlist& L) {
int j = 0;
for (int i = 0; i < L.length; i++) {
cout << L.elems[i] << " ";
j++;
if (j == 10) {
cout << endl;
j = 0;
}
}
cout << endl;
}
bool Add(Sqlist& L, int e) {
if (L.length == L.size || L.length > L.size) {
cout << "内存已满!!" << endl;
return false;
}
else if (L.length != L.size) {
L.elems[L.length] = e;
L.length++;
return true;
}
cout << "未知错误!!" << endl;
return false;
}
bool input_random(Sqlist& L, int a, int b) {
if (L.length == L.size || L.length > L.size) {
return false;
}
if (a<0 || a > L.length) {
return false;
}
for (int i = L.length - 1; i >= a; i--) {
L.elems[i + 1] = L.elems[i];
}
L.elems[a] = b;
L.length++;
return true;
}
bool input(Sqlist& L) {
int count = NULL;
int e = NULL;
int f = NULL;
cout << "请输入需要插入元素的个数:";
cin >> count;
for (int i = 0; i < count; i++) {
cout << "请输入插入位置以及插入数据,空格分开:";
cin >> f >> e;
if (input_random(L, f, e)) {
cout << "插入成功!" << endl;
e = NULL;
f = NULL;
}
else {
cout << "插入失败!" << endl;
return false;
}
}
}
bool input_tail(Sqlist& L) {
int e = NULL;
int count = NULL;
cout << "你要输入几个数据:";
cin >> count;
for (int i = 0; i < count; i++) {
cout << "请输入第" << i + 1 << "个元素:";
cin >> e;
if (Add(L, e)) {
e = NULL;
cout << "输入成功!!" << endl;
}
else {
cout << "输入失败!!" << endl;
return false;
}
}
}
bool Delete(Sqlist& L, int n) {
if (L.length == L.size) { return false; }
if (n<0 || n>L.length) { return false; }
if (n == L.length - 1) {
L.length--;
return true;
}
for (int i = n; i < L.length - 1; i++) {
L.elems[i] = L.elems[i + 1];
}
L.length--;
return true;
}
bool Remove(Sqlist& L) {
int count = NULL;
int e = NULL;
cout << "请输入需要删除元素的个数:";
cin >> count;
for (int i = 0; i < count; i++) {
cout << "请输入需要删除元素的下标:";
cin >> e;
if (Delete(L, e)) {
cout << "删除成功!!" << endl;
}
else {
cout << "删除失败!!" << endl;
return false;
}
}
return true;
}
void Empty(Sqlist& L) {
if (L.elems) {
delete []L.elems;
L.length = NULL;
L.size = NULL;
cout << "内存回收成功!!" << endl;
}
}
int main(void) {
Sqlist s1;
initList(s1);
bool q = input_tail(s1);
print(s1);
bool w = input(s1);
print(s1);
bool e = Remove(s1);
print(s1);
Empty(s1);
return NULL;
}