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