//Vito’s Sequential List1
#include <iostream>
using namespace std;
#define DataType int
//1.define a structure
struct SequentialList {
DataType *elements;
int size;
int capacity;
};
//2.initialize
void InitializeElement(SequentialList* list, int capacity) {
list->elements = new DataType[capacity];
list->size = 0;
list->capacity = capacity;
}
//3.destroy
void DestroyList(SequentialList* list) {
delete[] list->elements;
}
//4.list’s number
bool isEmpty(SequentialList* list) {
return list->size == 0;
}
int size(SequentialList* list) {
return list->size;
}
//5.insert
void InsertElement(SequentialList* list,int index, DataType element) {
if (index<0 || index > list->size) {
throw std::invalid_argument(“invalid index”);
}
if (list->size == list->capacity) {
int newCapacity = list->capacity * 2;
DataType* newElements = new DataType[newCapacity];
for (int i = 0; i < list->size; i++) {
newElements[i] = list->elements[i];
}
delete[] list->elements;
list->elements = newElements;
list->capacity = newCapacity;
}
for (int i = list->size; i > index; i–) {
list->elements[i] = list->elements[i – 1];
}
list->elements[index] = element;
list->size++;
}
//6.delete
void DeleteElement(SequentialList* list, int index) {
if (index<0 || index>=list->size) {
throw std::invalid_argument(“invalid index”);
}
for (int i = index; i < list->size; i++) {
list->elements[i] = list->elements[i + 1];
}
list->size–;
}
//7.find an element
int FindElement(SequentialList* list, DataType element) {
for (int i = 0; i < list->size; i++) {
if (list->elements[i] == element) {
return i;
}
}
return -1;
}
//8.element’s index
DataType GetElementIndex(SequentialList* list, int index) {
if (index<0 || index>list->size) {
throw std::invalid_argument(“invalid index”);
}
return list->elements[index];
}
//9.modify elements
void UpdateElement(SequentialList* list, int index, DataType element) {
if (index<0 || index>list->size) {
throw std::invalid_argument(“invalid index”);
}
list->elements[index] = element;
}
int main() {
SequentialList myList;
InitializeElement(&myList, 11);
for (int i = 0; i < 11; i++) {
InsertElement(&myList, i, i * 10);
}
cout << “Size:” << size(&myList)<<endl;
cout << “Is Empty:” << isEmpty(&myList) << endl;
for (int i = 0; i < size(&myList); i++) {
cout << GetElementIndex(&myList, i)<<” “;
}
cout << endl;
DeleteElement(&myList, 2);
for (int i = 0; i < size(&myList); i++) {
cout << GetElementIndex(&myList, i) << ” “;
}
cout << endl;
UpdateElement(&myList, 2, 1314);
for (int i = 0; i < size(&myList); i++) {
cout << GetElementIndex(&myList, i) << ” “;
}
cout << endl;
int idx = FindElement(&myList, 1314);
UpdateElement(&myList, idx, 520);
cout << “Size:” << size(&myList) << endl;
cout << “Is Empty:” << isEmpty(&myList) << endl;
for (int i = 0; i < size(&myList); i++) {
cout << GetElementIndex(&myList, i) << ” “;
}
cout << endl;
DestroyList(&myList);
return 0;
}