顺序表

题目描述

给出顺序表的初始数据,实现顺序表的定义、创建、插入、删除与查找操作。

输入

测试次数t

每组测试数据格式如下:

第一行: 正整数n,后跟n个整数

第二行: 插入位置 插入元素

第三行: 删除位置

第四行: 删除元素

第五行: 查找元素

输出

对每个顺序表,首先输出建表后的顺序表。

插入、删除操作,操作成功,输出操作后的顺序表。操作不成功,输出ERROR。

查找操作,查找成功,输出:1 元素位置(位置从1开始)比较次数。查找不成功,输出:0 0 比较次数。

样例输入

2

5 10 20 14 25 50

1 13

10

10

23

7 88 99 77 11 22 33 44

7 100

1

80

22

样例输出

5 10 20 14 25 50

6 13 10 20 14 25 50

ERROR

5 13 20 14 25 50

0 0 6

7 88 99 77 11 22 33 44

8 88 99 77 11 22 33 100 44

7 99 77 11 22 33 100 44

ERROR

1 4 4

代码:


#include<iostream>

using namespace std;

class StaticSearchTable{//class里面的函数,声明完了就行了,不要把函数体写在里面了乱得要死。

public:

int *elem;

int length;

int real_length;

public:

StaticSearchTable(){

cin>>length;

real_length=2*length;

elem=new int[real_length];

for(int i=1;i<length+1;i++)

{

cin>>elem[i];

}

}

void PrintTable();

bool Insert(int pos,int data);

bool Delete_loc(int pos);

bool Delete_elem(int data);

int Search(int key);

void judge(bool j);

};

bool StaticSearchTable::Insert(int pos,int data){

//cin>>pos>>data;

if(pos<1||pos>length)

{

return false;

}

else

{

for(int i=length;i>=pos;i--)

{

elem[i+1]=elem[i];

}

elem[pos]=data;

length++;

return true;

}

}

bool StaticSearchTable::Delete_loc(int pos) {

if(pos<1||pos>length)

{

return false;

}

else

{

if(pos!=length)

{

for(int i=pos+1;i<=length;i++)

{

elem[i-1]=elem[i];

    }

}

length--;

return true;

}

}

bool StaticSearchTable::Delete_elem(int data){

for(int i=1;i<length+1;i++)

{

if(elem[i]==data)

{

  for(;i<length;i++)

  {

  elem[i]=elem[i+1];

            }

            length--;

            return true;

        }

}

return false;

}

int StaticSearchTable::Search(int key){

int times=0;

for(int i=1;i<length+1;i++)

{

  if(elem[i]!=key)

  {

  times++;

  }

  else

  {

  return times;

  }

}

return times;

}

void StaticSearchTable::PrintTable(){

cout<<length<<' ';

int i;

for(i=1;i<length;i++)

{

cout<<elem[i]<<' ';

}

cout<<elem[i]<<endl;

}

void StaticSearchTable::judge(bool j)

{

if(j==true)

    {

    PrintTable();



}

else

{

cout<<"Error"<<endl;

}

}

int main()

{

int t;

cin>>t;

while(t--)

{

    int pos,data;

StaticSearchTable s;

cin>>pos>>data;

    bool ins=s.Insert(pos,data);

        s.judge(ins);

        //cout<<"ok"<<endl;

        cin>>pos;

    bool dele_loc=s.Delete_loc(pos);

    s.judge(dele_loc);



    cin>>data;

    bool dele_elem=s.Delete_elem(data);

    s.judge(dele_elem);



    cin>>data;

    int r=s.Search(data);

    if(r==s.length)

    {

    cout<<"0 0 "<<r+1<<endl;

}

else

{

cout<<"1 "<<r+1<<' '<<r+1<<endl;

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容