#include<iostream>
using namespace std;
#define eleType int
struct SeqList
{
eleType* elements;
int size; //实际大小,size<=capacity
int capacity;//容量
};
//初始化顺序表
void initList(SeqList* list, int capacity) {
list->elements = new eleType[capacity];//申请一个int数组,长度是capacity+1
list->size = 0;//大小为0
list->capacity = capacity;//容量为capacity
}
//销毁顺序表
void desList(SeqList* list) {
delete[] list->elements;//释放顺序表中元素的空间,delete用法
https://blog.csdn.net/qq_44443986/article/details/114800593
}
int size(SeqList* list) {
return list->size;
}
bool isEmptyList(SeqList* list) {
return list->size == 0;
}
//插入操作1.合法判断 2.满则扩容 3.插入位后元素后移 4.插入指定位置 5.大小
void insert(SeqList *list , int index,eleType element) {
//1
if (index <0 || index>list->size) {
throw std::invalid_argument("invalid index");
}
//2
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;//表中elemets指针指向新数组
list->capacity = newcapacity;//顺序表容量修改成新容量
}
//3
for (int i = list->size; i > index; i--) {//从后向前遍历,移动元素
//因为数组下标是从0开始,所以取size值刚好从最后一个元素的后面一位开始
list->elements[i] = list->elements[i - 1];
}
list->elements[index] = element;
list->size++;
}
void deleteElement(SeqList *list ,int index) {
if (index < 0 || index >= 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--;
}
int findElement(SeqList* list ,eleType element) {
for (int i = 0; i < list->size; ++i) {
if (list->elements[i] == element) {
return i;
}
}
return -1;
}
eleType getElement(SeqList* list, int index) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument("invalid index");
}
return list->elements[index];
}
void updateElement(SeqList* list, int index, eleType value) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument("invalid index");
}
list->elements[index] = value;
}
int main(){
SeqList List;
//初始化
initList(&List, 10);
//添加元素 0 10 20 30 40 50 60 70 80 90
for (int i = 0; i < 10; ++i) {
insert(&List, i, i * 10);
}
//检查一下
cout << "Size:" << size(&List) << endl;
cout << "Is Empty?" << isEmptyList(&List) << endl;
for (int i = 0; i < size(&List); ++i) {
cout << getElement(&List, i) << " ";
}
//删除
deleteElement(&List, 3);
//改
updateElement(&List, 1, 111);
//查看
for (int i = 0; i < size(&List); ++i) {
cout << getElement(&List, i) << " ";
}
cout << endl;
//找
int idx=findElement(&List, 70);
cout << idx << endl;
return 0;
}
顺序表笔记(增删查改)
最新推荐文章于 2024-09-27 14:28:55 发布