#C++ Day44 Basic Data Structure Chapter3  review-2 & Sequential list version 3.0 December 31 2025

//Sequential list version 3.0

#include <iostream>

using namespace std;

#define eleType int

//1.define a structure

struct SequentialList {

eleType* elements;

int capacity;

int size;

};

//2.initialize

void initializeList(SequentialList* list, int capacity) {

list->elements = new eleType[capacity];

list->capacity = capacity;

list->size = 0;

}

//3.destroy

void destroyList(SequentialList* list) {

delete[] list->elements;

list->elements = nullptr;

list->size = 0;

list->capacity = 0;

}

//4.size and is it empty

int sizeOfList(SequentialList* list) {

return list->size;

}

bool isEmpty(SequentialList* list) {

return list->size == 0;

}

//5.insert

void insertElement(SequentialList* list, int index,eleType element) {

if (index<0 || index>list->size) {

throw std::invalid_argument(“invalid index”);

}

if (list->capacity == list->size) {

int newcapacity =(list->capacity==0) ? 4 : 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.findindex

int findIndex(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;

int capa=10;

initializeList(&mylist, capa);

cout << “isEmpty:” << isEmpty(&mylist)<<endl;

cout << “size:” << sizeOfList(&mylist) << endl;

for (int i = 0; i < capa; i++) {

insertElement(&mylist, i, i * 10);

}

cout << “isEmpty:” << isEmpty(&mylist) << endl;

cout << “size:” << sizeOfList(&mylist) << endl;

for (int i = 0; i < sizeOfList(&mylist); i++) {

cout << getElement(&mylist, i) << ‘ ‘;

}cout << endl;

insertElement(&mylist,3, 5050);

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 id = findIndex(&mylist, 50);

if (id != -1) {

cout << “Found:” << getElement(&mylist, id) << endl;

deleteElement(&mylist, id);

}

else {

cout << “Not found!” << endl;

}

for (int i = 0; i < sizeOfList(&mylist); i++) {

cout << getElement(&mylist, i) << ‘ ‘;

}cout << endl;

cout << “isEmpty:” << isEmpty(&mylist) << endl;

cout << “size:” << sizeOfList(&mylist) << endl;

updateElement(&mylist, 5, 9090);

for (int i = 0; i < sizeOfList(&mylist); i++) {

cout << getElement(&mylist, i) << ‘ ‘;

}cout << endl;

cout << “isEmpty:” << isEmpty(&mylist) << endl;

cout << “size:” << sizeOfList(&mylist) << 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;

}