//定义一个顺序表 完成增删改查的工作 查看顺序表的大小 销毁顺序表
#include <iostream>
using namespace std;
#define eleType int
//定义一个顺序表
struct sequentialList{
eleType *elements;
int size;
int capacity;
};
//初始化顺序表
void initializeList(int capacity, sequentialList* list){
list->elements = new eleType[capacity];
list->size = 0;
list->capacity = capacity;
}
//查看顺序表的大小
int size(sequentialList *list) {
return list->size;
}
//增加元素
void insert(sequentialList *list, int index, int element){
//判断索引是否合法
if(index < 0 || index > list->size){
throw std::invalid_argument("index invalid");
}
//判断是否超出最大容量
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;
list->size = list->size + 1;
}
//删除元素
void deleteElements(sequentialList *list, int index){
if(index < 0 || index > list->size){
throw std::invalid_argument("index invalid");
}
for (int i = index; i < list->size - 1; ++i){
list->elements[i] = list->elements[i + 1];
}
list->size = list->size - 1;
}
//更改元素
void updateElement(sequentialList *list, int index, int element){
if(index < 0 || index > list->size){
throw std::invalid_argument("index invalid");
}
list->elements[index] = element;
}
//查找元素(返回索引)
int findElement(sequentialList *list, eleType element) {
for (int i = 0; i < list->size; ++i) {
if(element == list->elements[i]){
return i;
}
}
return -1; //表示没有找到这个元素
}
//查找元素(返回元素)
eleType getElement(sequentialList *list, int index){
if (index < 0 || index >= list->size){
throw invalid_argument("Invalid Position");
}
return list->elements[index];
}
//输出顺序表元素所有
void printAll(sequentialList *list){
for (int i = 0; i < list->size; ++i) {
cout << list->elements[i] << ' ' ;
}
cout << endl;
}
int main() {
sequentialList myList;
initializeList(1,&myList);
for (int i = 0; i < 10; ++i) {
insert(&myList, i, i*10);
}
printAll(&myList);
insert(&myList, 3, 520);
cout << myList.size << endl;
printAll(&myList);
cout << getElement(&myList,3) << endl;
deleteElements(&myList, 0);
printAll(&myList);
cout << "size:" << size(&myList) << endl;
updateElement(&myList, 0, 1314);
printAll(&myList);
cout << findElement(&myList, 520) << endl;
cout << findElement(&myList, 123) << endl;
return 0;
}
输出