数据结构:顺序表的基本操作

顺序表作业:

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
typedef int T;
class SeqList{
private:
    T *data;
    int MaxSize; ///顺序表最多可以存放的元素个数。
    int last; ///顺序表最后一个元素的下标,初始值为-1。
public:
    SeqList(int sz);
    void Input();///首先输入元素的个数,然后顺次输入元素的值。
    void Output();///输出线性表的所有元素。
    void Insert(const T x, int i );///在线性表中第i个位置插入值为x的元素。
    void Remove ( T x );///从线性表中删除第一个值等于x的元素。
};

SeqList::SeqList(int sz) {
    data = new T[sz];
    MaxSize = sz;
    last = -1;
}
void SeqList::Input() {
    int n;
    cin >> n;
    int value;
    for(int i = 0; i < n; ++i){
        cin >>value;
        *(data+i) = value;
    }
    last=n-1;
}
void SeqList::Output(){
    cout <<"The elements are:" <<endl;
    for(int i = 0; i <= last; ++i){
        cout <<*(data+i) <<endl;
    }
}
void SeqList::Insert(int value, int locate){
    if(last == -1){
        *data = value;
        last = 0;
    }
    else if(locate > last){
        ++last;
        *(data + last) = value;
    }
    else{
        ++last;
        int i;
        for(i = last; i > locate; --i){
            *(data+i) = *(data+i-1);
        }
        *(data+i) = value;
    }
}
void SeqList::Remove(int value){
    int i;--last;
    for(i = 0; i <= last&&*(data+i)!=value; ++i){
        *(data+i) = *(data+i+1);
    }
    for(i = 0; i <= last; ++i){
        *(data+i) = *(data+i+1);
    }
}
int main(){
    SeqList myList(100);
    myList.Input();
    myList.Output ();
    int i;
    for( i=0; i<5; i++)
        myList.Insert(i+10,i);
    myList.Output ();
    for( i=10; i<15; i++)
        myList.Remove(i);
    myList.Output ();
    return 0;
}
原文地址:https://www.cnblogs.com/Kurokey/p/5883163.html