DS靜態查詢之順序查詢

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

題目:

問題 A: DS靜態查詢之順序查詢
時間限制: 1 Sec  記憶體限制: 128 MB
提交: 335  解決: 301
[提交][狀態][討論版]
題目描述
給出一個佇列和要查詢的數值,找出數值在佇列中的位置,佇列位置從1開始

要求使用帶哨兵的順序查詢演算法

輸入
第一行輸入n,表示佇列有n個資料
第二行輸入n個資料,都是正整數,用空格隔開
第三行輸入t,表示有t個要查詢的數值
第四行起,輸入t個數值,輸入t行

輸出
每行輸出一個要查詢的數值在佇列的位置,如果查詢不成功,輸出字串error

樣例輸入
8
33 66 22 88 11 27 44 55
3
22
11
99
樣例輸出
3
5
error

程式碼塊:

#include <iostream>
using namespace std;

class SSTable
{
    int *elem;
    int length;
public:
    SSTable();
    ~SSTable();
    void InitSSTable();
    void Search_Seq();
};

SSTable::SSTable()
{
    cin>>length;
    elem = new int[length+1];
}

SSTable::~SSTable()
{
    delete []elem;
}

void SSTable::InitSSTable()
{
    elem[0] = 0;
    for(int i=1; i<=length; i++)
        cin>>elem[i];
}

void SSTable::Search_Seq()
{
    cin>>elem[0];
    int i = length;
    while(elem[i]!=elem[0])
        i--;
    if(i==0)
        cout<<"error"<<endl;
    else
        cout<<i<<endl;
}

int main(void)
{
    SSTable myTable;
    myTable.InitSSTable();
    int t;
    cin>>t;
    while(t--)
        myTable.Search_Seq();
    return 0;
}

相關文章