首页 > 代码库 > 顺序表

顺序表

#include <iostream>
using namespace std;
#define MaxSize 25
typedef int DataType;
class SeqList{
    DataType list[MaxSize];
    int length;
    public:
        SeqList(){length = 0;}
        void SLCreat(int n);//创建顺序表
        void SLInsert(int i, DataType x); //在顺序表L中的第i个位置插入数据元素x
        void SLDelete(int i); //在顺序表L中的第i个位置删除数据元素
        DataType SLGet(int i); //获取第i个位置的元素位置
        DataType SLSum(); //求和
        int SLIsEmpty(); //判断顺序表是否为空
        void SLPrint(); //将顺序表显示在屏幕上
};
//创建顺序表
void SeqList::SLCreat(int n){
    DataType x;
    cout << "请输入数据元素值:";
    for(int i = 0; i < n; i++){
        cin >> x;
        list[i] = x;
        length++;
    }
}
//在顺序表L中的i位置插入数据元素
void SeqList::SLInsert(int i, DataType x){
    int k;
    if(length >= MaxSize){
        cout << "表已满,无法插入!" << endl;
    }
    else if(i < 0 || i > length){
        cout << "参数i不合理!" << endl;
    }
    else{
        for(k = length; k > i; k--){
            list[k] = list[k - 1];
        }
        list[i] = list[i - 1];
        list[i - 1] = x;
        length++;
    }
}
//删除第i个位置的元素
void SeqList::SLDelete(int i){
    int k;
    if(!SLIsEmpty()){
        cout << "表已空,无法删除!" << endl;
    }
    else if(i < 0 || i > length){
        cout << "参数i不合理!" << endl;
    }
    else{
        for(k = i - 1; k < length; k++){
            list[k] = list[k + 1];
        }
        length--;
    }
}
//获取第i个位置的元素的数值
DataType SeqList::SLGet(int i){
    if(i < 0 || i > length){
        cout << "参数i不合理!" << endl;
        return 0;
    }
    else{
        return list[i - 1];
    }
}
//判断书序表是否为空
int SeqList::SLIsEmpty(){
    if(length <= 0){
        return 0;
    }
    else{
        return 1;
    }
}
//将顺序表显示在屏幕上
void SeqList::SLPrint(){
    if(!SLIsEmpty()){
        cout << "空表!" << endl;
    }
    else{
        for(int i = 0; i < length; i++){
            cout << list[i] << " ";
        }
        cout << endl;
    }
}
//求和
DataType SeqList::SLSum(){
    int sum = 0;
    for(int i = 0; i < length; i++){
        sum += list[i];
    }
    return sum;
}
int main(){
    SeqList mylist;
    int i, n, flag = 1, select;
    DataType x;
    cout << "1.建立顺序表\n" ;
    cout << "2.求第i个位置上的数值\n" ;
    cout << "3.在第i个位置前插入数值元素x\n" ;
    cout << "4.删除第i个位置上的数值\n" ;
    cout << "5.该顺序表上各个元素之和\n" ;
    cout << "6.输出显示\n" ;
    cout << "7.退出\n" ;
    cout << "特别说明:第一次请选择1,以后就不要选择1了!\n";
    while(flag){
        cout << "请选择:";
        cin >> select;
        switch(select){
            case 1:
                cout << "请输入顺序表长度:";
                cin >> n;
                mylist.SLCreat(n);
                cout << "顺序表为:  ";
                mylist.SLPrint();
                break;
            case 2:
                cout << "请输入位置i:";
                cin >> i;
                cout << "第" << i << "个位置上的数值为:" << mylist.SLGet(i) << endl;
                break;
            case 3:
                cout << "请输入要插入元素的位置i和数值x";
                cin >> i >> x;
                mylist.SLInsert(i, x);
                mylist.SLPrint();
                break;
            case 4:
                cout << "请输入要删除的数值的位置:";
                cin >> i;
                mylist.SLDelete(i);
                cout << "删除后的顺序表为:";
                mylist.SLPrint();
                break;
            case 5:
                cout << "求和的值: " << mylist.SLSum() << endl;
                break;
            case 6:
                cout << "顺序表为: ";
                mylist.SLPrint();
                break;
            case 7:
                flag = 0;
                break;
        }
    }
    return 0;
}

顺序表