Day4顺序表c++代码实现
代码中实现,顺序表的初始化,插入,查找,删除
废话不多说,直接上
#include<iostream>
using namespace std;
#define eleType int
struct SequentialList {eleType* elements;//指针int size;int capacity;//容量
};//定义一个结构体
void initializeList(SequentialList* list, int capacity) {//初始化顺序表list->elements = new eleType[capacity];//申请空间list->size = 0;list->capacity = capacity;
}
void destroyList(SequentialList* list) {//销毁库delete[] list->elements;//使用delete关键字
}
int size(SequentialList* list) {//获取顺序表的大小return list->size;
}
bool isEmpty(SequentialList* list) {//判断顺序表是否为0;return list->size == 0;
}
void insert(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* newElements = new eleType[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;//给index位置赋值list->size++;//size增加
}
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--;//size数值减少
}
int findElement(SequentialList* list, int element) {//顺序表的查找for (int i = 0; i < list->size; ++i) {//遍历比较if (list->elements[i] == element) {return i;//返回i}}return -1;
}
eleType getElement(SequentialList* list, int index) {//获取第index个元素的值if (index < 0 || index >= list->size) {//判断位置是否合法throw std::invalid_argument("Invalid index");//抛出错误}return list->elements[index];//直接给出第index的元素的值
}
void updateElement(SequentialList* list, int index, eleType value) {//修改元素的值if (index < 0 || index >= list->size) {//判断位置是否合法throw std::invalid_argument("Invalid index");//抛出错误}list->elements[index] = value;
}
int main() {SequentialList mylist;initializeList(&mylist, 10);//初始化for (int i = 0; i < 10; ++i) {insert(&mylist, i, i * 10);//插入数据}cout << "Size:" << size(&mylist) << endl;//顺序表的大小cout << "Is empty:" << isEmpty(&mylist) << endl;//判断顺序表是否为空for (int i = 0; i < size(&mylist); ++i) {cout << getElement(&mylist, i) << " ";}cout << endl;deleteElement(&mylist, 5);updateElement(&mylist, 1, 1314);for (int i = 0; i < size(&mylist); ++i) {cout << getElement(&mylist, i) << " ";}cout << endl;int idx = findElement(&mylist, 20);cout << idx << endl;updateElement(&mylist, idx, 520);for (int i = 0; i < size(&mylist); ++i) {cout << getElement(&mylist, i) << " ";}cout << endl;destroyList(&mylist);return 0;
}