//Basic Data Structure Day2 Vito’s Sequential List 5 review
#include <iostream>
using namespace std;
#define eleType int
//1.
struct SequentialList {
eleType* elements;
int capacity;
int size;
};
//2.initial
void initializeList(SequentialList * list,int capacity){
list->elements = new eleType[capacity];
list->capacity = capacity;
list->size = 0;
}
//3.Is Empty
bool isEmpty(SequentialList* list) {
return list->size == 0;
}
int sizeOfList(SequentialList* list) {
return list->size;
}
//4.destroy
void destroyList(SequentialList* list) {
delete[] list->elements;
}
//5.insert
void insertElement(SequentialList* list, int index, eleType element) {
if (index < 0 || index > list->size)
{
throw std::invalid_argument(“invalid index”);
}
if (list->size == list->capacity) {
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] = 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 – 1; i++) {
list->elements[i] = list->elements[i + 1];
}
list->size–;
}
//7.find
int findElementIndex(SequentialList* list, eleType element) {
for (int i = 0; i < list->size; i++) {
if (list->elements[i] == element) {
return i;
}
}
return -1;
}
//8.get
eleType getElement(SequentialList* list, int index) {
if (index < 0 || index >= list->size)
{
throw std::invalid_argument(“invalid index”);
}
return list->elements[index];
}
//9.update
void updateElement(SequentialList* list, int index, eleType element) {
if (index < 0 || index >= list->size)
{
throw std::invalid_argument(“invalid index”);
}
list->elements[index] = element;
}
int main() {
SequentialList myList;
initializeList(&myList, 10);
cout << “Size:” << sizeOfList(&myList)<<endl;
cout << “isEmpty:” << isEmpty(&myList) << endl;
for (int i = 0; i < myList.capacity; i++) {
insertElement(&myList, i, i * 10);
}
cout << “Size:” << sizeOfList(&myList) << endl;
cout << “isEmpty:” << isEmpty(&myList) << endl;
for (int i = 0; i < myList.size; i++) {
cout <<getElement(&myList, i)<<‘ ‘;
}
cout << endl;
int idx = findElementIndex(&myList, 60);
updateElement(&myList, idx, 1314);
for (int i = 0; i < myList.size; i++) {
cout << getElement(&myList, i) << ‘ ‘;
}
cout << endl;
deleteElement(&myList, myList.size – 1);
for (int i = 0; i < myList.size; i++) {
cout << getElement(&myList, i) << ‘ ‘;
}
cout << endl;
destroyList(&myList);
return 0;
}