順序表的操作有以下:
1 順序表的元素插入
給定一個索引和元素,這個位置往后的元素位置都要往后移動一次,元素插入的步驟有以下幾步
(1)判斷插入的位置是否合法,如果不合法則拋出異常
(2)如果是順序表已滿,則需要擴容順序表,一般是將原有順序表的容量進行倍增
(3)將插入位置之后的元素向后移動,為新元素騰出空間
(4)將新元素插入到指定位置
(5)更新順序表的大小
2 順序表的元素刪除
將對應索引位置元素刪除后,這個位置往后所有元素位置往前移動一次,元素刪除有以下幾步
(1)判斷刪除位置是否合法,如果不合法則拋出異常
(2)如果刪除位置為最后一個元素,則順序表的大小直接-1
(3)如果刪除位置不是最后一個元素,則將刪除位置之后的元素向前移動,覆蓋要刪除的元素
(4)更新順序表的大小
3 順序表的元素查找
找到元素位置,并且返回索引,查找步驟為
(1)遍歷順序表,對順序表中每個元素與指定元素進行比較,如果找到則返回對應索引
(2)如果遍歷完所有元素,都沒有找到對應元素,則返回-1
4 順序表的元素索引
直接即可獲得
5 順序表的元素修改
直接將給定位置改為對應的值
附順序表代碼見下:
#include<iostream>
using namespace std;
#define eleType intstruct 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 destoryList(SequentialList* list) {delete[] list->elements;
}int size(SequentialList* list) {return list->size;
}bool isEmpty(SequentialList* list) {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 *newelement = new eleType[newCapacity];for (int i = 0; i < newCapacity / 2; ++i) {newelement[i] = list->elements[i];}delete[] list->elements;list->elements = newelement;list->capacity = newCapacity;}if (list->size < list->capacity) {for (int i = list->size - 1; i > index; --i) {list->elements[i] = list->elements[i - 1];}list->elements[index] = element;list->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--;
}int findElement(SequentialList* list, eleType element) {for (int i = 0; i < list->size; ++i) {if (list->elements[i] == element) {return i;}}return -1;
}eleType getElement(SequentialList* list, int index) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid_index");}return list->elements[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;
}