#C++ Day36 Basic Data Structure Chapter3  November 21 2025

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

}