#include<iostream>
using namespace std;
#define eleType int
struct SequentialList {
eleType* elements;
int capacity;
int size;
};
void initializeList(SequentialList* list, int capacity) {
list->elements = new eleType[capacity];
list->capacity = capacity;
list->size = 0;
}
bool isEmpty(SequentialList* list) {
return list->size == 0;
}
int sizeOfList(SequentialList* list) {
return list->size;
}
void destroyList(SequentialList* list) {
delete[] list->elements;
list->capacity = 0;
list->size = 0;
}
void insertElement(SequentialList* list, int index,eleType value) {
if (index<0 || index>list->size) {
throw std::invalid_argument(“invalid index”);
}
if (list->capacity == list->size) {
int newCapacity = list->capacity * 2;
eleType* newList = new eleType[newCapacity];
for (int i = 0; i < list->size; i++) {
newList[i] = list->elements[i];
}
delete[] list->elements;
list->elements = newList;
list->capacity = newCapacity;
}
for (int i = list->size; i > index; i–) {
list->elements[i] = list->elements[i-1];
}
list->elements[index] = value;
list->size++;
}
void removeElement(SequentialList* list, int index) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument(“invalid index”);
}
for (int i = index; i < list->size – 1; i++) {
list->elements[i] = list->elements[i + 1];
}
list->size–;
}
int findElement(SequentialList* list, eleType value) {
for (int i = 0; i < list->size; i++) {
if (list->elements[i] == value) {
return i;
}
}
return -1;
}
eleType getElement(SequentialList* list,int index){
if(index<0||index>=list->size){
throw std::invalid_argument(“invalid index”);
}
return list->elements[index];
}
void updateElement(SequentialList* list, int index, eleType value) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument(“invalid index”);
}
list->elements[index] = value;
}
int main(){
SequentialList mylist;
initializeList(&mylist, 10);
cout << “isEmpty:” << isEmpty(&mylist) << endl;
cout << “Size:” << sizeOfList(&mylist) << endl;
for (int i = 0; i < mylist.capacity; i++) {
insertElement(&mylist, i, i * 10);
}
for (int i = 0; i < sizeOfList(&mylist); i++) {
cout << getElement(&mylist,i) << ‘ ‘;
}cout << endl;
cout << “isEmpty:” << isEmpty(&mylist) << endl;
cout << “Size:” << sizeOfList(&mylist) << endl;
int idx = findElement(&mylist, 50);
//cout << index << endl;
updateElement(&mylist, idx, 888);
for (int i = 0; i < sizeOfList(&mylist); i++) {
cout << getElement(&mylist, i) << ‘ ‘;
}cout << endl;
removeElement(&mylist, idx+1);
for (int i = 0; i < sizeOfList(&mylist); i++) {
cout << getElement(&mylist, i) << ‘ ‘;
}cout << endl;
destroyList(&mylist);
for (int i = 0; i < sizeOfList(&mylist); i++) {
cout << getElement(&mylist, i) << ‘ ‘;
}cout << endl;
cout << “isEmpty:” << isEmpty(&mylist) << endl;
cout << “Size:” << sizeOfList(&mylist) << endl;
return 0;
}
