#C++ Day36 Basic Data Structure Chapter2,3  November 22 2025

//First completely wrote up all the code of sequential list

#include <iostream>

using namespace std;

#define eleType int

//1.define a structure

struct SequentialList {

eleType* elements;

int size;

int capacity;

};

//2.Initialize a list

void InitializeList(SequentialList* list, int capacity) {

list->elements = new eleType[capacity];

list->size = 0;

list->capacity = capacity;

}

//3.Destroy a list

void DestroyList(SequentialList* list) {

delete[] list->elements;

}

//4.IsEmpty and Size

bool IsEmpty(SequentialList* list) {

return list->size == 0;

}

int Size(SequentialList* list) {

return list->size;

}

//5.Insert an element

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 an element

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 the index of an element

int FindElementIndex(SequentialList* list, eleType element) {

for (int i = 0; i < list->size; i++) {

if (list->elements[i] == element) {

return i;

}

}

return -1;

}

//8.GetElement

eleType GetElement(SequentialList* list, int index) {

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

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

}

return list->elements[index];

}

//9.UpdateElement

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 VitoList;

InitializeList(&VitoList, 10);

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

InsertElement(&VitoList, i, i * 10);

}

cout << “IsEmpty:” << IsEmpty(&VitoList)<<endl;

cout << “Size:” << Size(&VitoList)<<endl;

for (int i = 0; i < Size(&VitoList); i++) {

cout << GetElement(&VitoList,i)<<” “;

}

cout << endl;

InsertElement(&VitoList, 10, 520);

for (int i = 0; i < Size(&VitoList); i++) {

cout << GetElement(&VitoList, i) << ” “;

}

cout << endl;

DeleteElement(&VitoList, 5);

for (int i = 0; i < Size(&VitoList); i++) {

cout << GetElement(&VitoList, i) << ” “;

}

cout << endl;

int id=FindElementIndex(&VitoList, 70);

cout << id << endl;

UpdateElement(&VitoList, id, 666);

for (int i = 0; i < Size(&VitoList); i++) {

cout << GetElement(&VitoList, i) << ” “;

}

cout << endl;

InsertElement(&VitoList, 10, 5566);

for (int i = 0; i < Size(&VitoList); i++) {

cout << GetElement(&VitoList, i) << ” “;

}

cout << endl;

cout << “IsEmpty:” << IsEmpty(&VitoList) << endl;

cout << “Size:” << Size(&VitoList) << endl;

DestroyList(&VitoList);

for (int i = 0; i < Size(&VitoList); i++) {

cout << GetElement(&VitoList, i) << ” “;

}

cout << endl;

return 0;

}