#include <iostream>
#define eleType int
using namespace std;
struct SequentialList{
eleType *data;
int size;
int capacity;
};
void initial(SequentialList *list, int capacity){
list->data = new eleType[capacity];
list->size = 0;
list->capacity = capacity;
}
void deleteList(SequentialList *list){
delete[] list->data;
}
bool isEmpty(SequentialList *list){
return list->size == 0;
}
int size(SequentialList *list){
return list->size;
}
void insert(SequentialList *list, int index, eleType val){
if(index < 0 || index > list->size) throw invalid_argument("Invalid index");
if(list->capacity == list->size){
int newCapacity = 2 * list->capacity;
eleType *newList = new eleType[newCapacity];
for(int i = 0; i < list->size; i++){
newList[i] = list->data[i];
}
delete[] list->data;
list->data = newList;
list->capacity = newCapacity;
}
for(int i = list->size; i > index; i--){
list->data[i] = list->data[i - 1];
}
list->data[index] = val;
list->size += 1;
}
void deleteList(SequentialList *list, int index){
if(index < 0 || index >= list->size) throw invalid_argument("Invalid index");
for(int i = index; i < list->capacity; i++){
list->data[i] = list->data[i + 1];
}
list->size -= 1;
}
int findEle(SequentialList *list, eleType val){
for(int i = 0; i < list->size; i++){
if(list->data[i] == val) return i;
}
return -1;
}
eleType getEle(SequentialList *list, int index){
if(index < 0 || index >= list->size) throw invalid_argument("Invalid index");
return list->data[index];
}
void updateList(SequentialList *list, int index, eleType val){
if(index < 0 || index >= list->size) throw invalid_argument("Invalid index");
list->data[index] = val;
}
int main(){
SequentialList *mylist = new SequentialList;
initial(mylist, 10);
for(int i = 0; i < 10; i++){
insert(mylist, i, i * 10);
}
updateList(mylist, 2, 1314);
for(int i = 0; i < size(mylist); i++){
cout << getEle(mylist, i) << " ";
}
cout << endl;
updateList(mylist, 2, 1315);
for(int i = 0; i < size(mylist); i++){
cout << getEle(mylist, i) << " ";
}
cout << endl;
cout << findEle(mylist, 1315);
cout << endl;
insert(mylist, 10, 1999);
for(int i = 0; i < size(mylist); i++){
cout << getEle(mylist, i) << " ";
}
cout << endl;
return 0;
}
数据结构之顺序表
最新推荐文章于 2024-10-07 12:07:27 发布