DS順序表--類實現

夜闌優琿發表於2020-12-13

題解

  1. 注意這裡的輸入是以1作為第一個元素的。
  2. 注意刪除、插入和查詢操作的有效範圍不一樣。刪除和查詢都是從0到n-1,而插入要比它們多一個,從0到n。

題目

問題 I: DS順序表--類實現
時間限制: 1 Sec  記憶體限制: 128 MB
提交: 921  解決: 314
[提交][狀態][討論版]
題目描述
實現順序表的用C++語言和類實現順序表

屬性包括:陣列、實際長度、最大長度(設定為1000)

操作包括:建立、插入、刪除、查詢

類定義參考

在這裡插入圖片描述

輸入
第1行先輸入n表示有n個資料,即n是實際長度;接著輸入n個資料
第2行輸入要插入的位置和新資料
第3行輸入要插入的位置和新資料
第4行輸入要刪除的位置
第5行輸入要刪除的位置
第6行輸入要查詢的位置
第7行輸入要查詢的位置

輸出
資料之間用空格隔開

第1行輸出建立後的順序表內容,包括順序表實際長度和資料

每成功執行一次操作(插入或刪除),輸出執行後的順序表內容

每成功執行一次查詢,輸出查詢到的資料

如果執行操作失敗(包括插入、刪除、查詢等失敗),輸出字串error,不必輸出順序表內容

樣例輸入
6 11 22 33 44 55 66
3 777
1 888
1
9
0
5
樣例輸出
6 11 22 33 44 55 66 
7 11 22 777 33 44 55 66 
8 888 11 22 777 33 44 55 66 
7 11 22 777 33 44 55 66 
error
error
44
提示
第i個位置是邏輯意義的位置,從1開始,在實際程式設計用陣列,從0開始,對應陣列i-1位置

程式碼塊

#include <iostream>
using namespace std;

class SeqList
{
private:
    int *list;
    int maxsize;
    int size;
    void list_display();
public:
    SeqList();
    ~SeqList();
    void list_create();
    void list_insert();
    void list_del();
    void list_get();
};

SeqList::SeqList()
{
    maxsize = 1000;
    size = 0;
    list = new int[maxsize];
}

SeqList::~SeqList()
{
    delete []list;
}

void SeqList::list_create()
{
    int i, n;
    cin>>n;
    size = n;
    for(i=0; i<n; i++)
        cin>>list[i];
    cout<<size<<' ';
    list_display();
}

void SeqList::list_insert()
{
    int i, item;
    cin>>i>>item;
    if(0<i && i<=size+1)
    {
        for(int j=size-1; j>=i-1; j--)
            list[j+1] = list[j];
        list[i-1] = item;
        size++;
        cout<<size<<' ';
        list_display();
    }
    else
        cout<<"error"<<endl;
}

void SeqList::list_del()
{
    int i;
    cin>>i;
    if(0<i && i<=size)
    {
        for(int j=i-1; j<size-1; j++)
            list[j] = list[j+1];
        size--;
        cout<<size<<' ';
        list_display();
    }
    else
        cout<<"error"<<endl;
}

void SeqList::list_get()
{
    int i;
    cin>>i;
    if(0<i && i<=size)
        cout<<list[i-1]<<endl;
    else
        cout<<"error"<<endl;
}

void SeqList::list_display()
{
    for(int i=0; i<size; i++)
        cout<<list[i]<<' ';
    cout<<endl;
}

int main(void)
{
    SeqList myList;
    myList.list_create();
    myList.list_insert();
    myList.list_insert();
    myList.list_del();
    myList.list_del();
    myList.list_get();
    myList.list_get();
    return 0;
}

相關文章