VB 关于【有序线性表】
- 提问者网友:相思似海深
- 2021-03-04 21:58
在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为
A 63
B 64
C 6
D 7
答案为:B
我想请VB高手帮忙解释一下这道题,我不大明白什么叫“有序线性表”,还有就是,比较的方式。
为什么不是63呢?
谢谢~~ O(∩_∩)O
- 五星知识达人网友:零点过十分
- 2021-03-04 23:13
顺序查找的基本思想是:从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查到所要找的元素为止。否则就是表中没有要找的元素,查找不成功。当然最坏就是没有找到啦,所以的问题答案是64不是63啦~
- 1楼网友:怀裏藏嬌
- 2021-03-05 00:38
#include<iostream>
using namespace std;
#define maxsize 100
typedef int datatype;
class seqlist
{
datatype list[maxsize];
int length;
public:
seqlist() //构造函数
{
length=0;
}
void slcreat(int n); //创建顺序表
void slinsert(datatype x); //在顺序表的位置i插入值x
int getlength() //获取当前顺序表的数据长度
{
return length;
}
int slisempty(); //顺序表是否为空
void slprint(); //输出顺序表的数据内容
};
//创建长度为n的顺序表
void seqlist::slcreat(int n)
{
int i;
datatype x;
cout<<"请输入顺序表的数据元素:";
for(i=0;i<n;i++)
{
cin>>x;
list[i]=x;
length++;
}
}
//在顺序表的位置i插入值x
void seqlist::slinsert(datatype x)
{
int i,k;
for(k=0;k<length;k++)
{
if(x>list[k])
{
continue;
}
else
{
i=k;
break;//goto ii;
}
}
///ii:
cout<<k<<endl;
if(k==length) //
{
i=length;
}
for(k=length;k>i;k--)
{
list[k]=list[k-1];//数据插入前,位置i之后的数据后移
}
list[i]=x;
length++;
}
//判断表是否为空
int seqlist::slisempty()
{
if(length<=0)
{
return 0;
}
else
{
return 1;
}
}
//输出顺序表数据
void seqlist::slprint()
{
int i;
if(!slisempty())
{
cout<<"顺序表为空~"<<endl;
}
else
{
for(i=0;i<length;i++)
{
cout<<" "<<list[i]<<" ";
}
cout<<endl;
}
}
int main()
{
int n,i,flag=1;
seqlist sl;
datatype x;
cout<<"请输入创建顺序表的长度:";
cin>>n;
sl.slcreat(n);
while(flag)
{
flag++;
cout<<" 插入数据:";
cin>>x;
sl.slinsert(x);
cout<<" 插入数据 "<<x<<" 后顺序表为:"<<endl;
sl.slprint();
if(flag==5)
flag=0;
}
return 0;
}