- 內存空間是一連串的地址空間
- 需要一個唯一的表名
- 可根據對態位置進行存取
###基本的順序表結構
```c++
const int defaultSize = 10;
template <typename DataType> class SeqList{
public:
SeqList(int size = defaultSize){
if (size > 0) { //檢查是否合法
maxSize = size;
elements = new DataType[maxSize];//分配內存
}
}
~SeqList(){
delete[] elements;//回收內存空間
}
private:
DataType * elements;
int maxSize;//最大大小
};
```
現在來加入元素的基本操作
```C++
const int defaultSize = 10;
template <typename DataType> class SeqList{
public:
SeqList(int size = defaultSize){
if (size > 0) { //檢查是否合法
maxSize = size;
elements = new DataType[maxSize];//分配內存
}
}
~SeqList(){
delete[] elements;//回收內存空間
}
bool insertElement(DataType data);//表尾插入新元素
bool deleteElement(int location);//刪除指定地址的元素
DataType getElement(int location);//取得指定地址的元素
bool changeElement(int location, DataType newData);//改變指定地址的元素
int getLength(){
return length;
}
private:
DataType * elements;
int maxSize;//最大大小
int length;//表的有效長度
};
```
###表尾插入新元素 insertElement
```C++
template <typename DataType> bool SeqList<DataType>::insertElement(DataType data){
int currentIndex = length; //新元素插入的位置
if (length >= maxSize) {
return false;
}else{
elements[currentIndex] = data; //插入新元素到表尾
length++; //表的有效長度+1
return true;
}
}
```
刪除元素 deleteElement
```C++
template <typename DataType> bool SeqList<DataType>::deleteElement(int location){
if (location >= length || location < 0) { //檢查參數是否有效
return false;
}else{
for (int i = location; i < length; i++) {
elements[i] = elements[i+1]; //把刪除了的元素後一位的元素往前移動以覆蓋已刪除的元素位址
}
length--; //表的長度-1
return true;
}
}
步驟:
###取得指定位置的元素 getElement
```C++
template <typename DataType> DataType SeqList<DataType>::getElement(int location){
if(location < 0 || location > length){ //檢查參數是否有效
cout << "參數無效" << endl;
return 0;
}else{
return elements[location];
}
}
```
###修改指定位置的元素 changeElement
```C++
template <typename DataType> bool SeqList<DataType>::changeElement(int location, DataType newData){
if (location < 0 || location >= length) { //檢查參數是否有效
return false;
}else{
elements[location] = newData; //賦予新元素給指定位置
return true;
}
}
```
--------------------------------
此博客全部文章同步在:
http://onenode.gitcafe.io
http://blog.csdn.net/leonghouheng
No comments:
Post a Comment