2020-10-07

    科技2024-07-23  66

    C++数据结构

    线性表的顺序存储结构与操作

    定义一个顺序表,可以对顺序表进行如下操作:

    在某个元素之前插入一些元素 删除某个位置的元素 查找某元素 获取某个位置的元素 遍历输出所有元素

    键盘输入一些命令,可以执行上述操作。本题中,顺序表元素为整数,顺序表的第一个元素位置为1,顺序表的最大长度为20 #include using namespace std; const int MaxSize = 20; class SeqList { public: SeqList(); void Insert(int i,int insert); void Located(int x); void Get(int i); void Delete(int i); void PrintList();

    ~SeqList(); private: int data[MaxSize]; int length;

    };

    SeqList::SeqList() { length = 0; }

    void SeqList::Insert(int i,int insert) { if(length >= MaxSize) cout << “上溢” << endl; if(i < 1||i > length+1) cout << “位置不正确” << endl; else{ for(int j = length; j >= i; j–) { data[j] = data[j-1]; } data[i-1] = insert; length++; } }

    void SeqList::Located(int x) { int flag = 0; for(int i = 0; i < length; i++) { if(data[i] == x) { cout << i+1 << endl; flag = 1; } } if(flag == 0) { cout << “None” << endl; } }

    void SeqList::Get(int i) { if(i < 1 && i > length) { cout << “位置不正确” << endl; } else { cout << data[i-1] << endl; } }

    void SeqList::Delete(int i) { int delete_number; if(length == 0)cout << “下溢” << endl; if(i < 1|| i > length) cout << “位置不正确” << endl; else{ delete_number = data[i-1]; for(int j = i; j < length; j++) { data[j-1] = data[j]; } cout << delete_number << endl ; length–; }

    }

    void SeqList::PrintList() { for(int i = 0; i < length; i++) { cout << data[i] << endl; } }

    SeqList::~SeqList() { }

    int main() { int x; int number; int insert; SeqList l; char choice; while(cin >> choice && choice != ‘E’) {

    if(choice == 'I') { cin >> number; for(int i = 0; i < number; i++) { cin >> x; cin >> insert; l.Insert(x,insert); } } else if(choice == 'S') { int s_number; cin >> s_number; l.Located(s_number); } else if(choice == 'G') { int g_number; cin >> g_number; l.Get(g_number); } else if(choice == 'D') { int d_number; cin >> d_number; l.Delete(d_number); } else if(choice == 'V') { l.PrintList(); } } return 0;

    }

    Processed: 0.013, SQL: 8