• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

数据结构题库之数组(六)

极客题库 Geekerstar 10个月前 (06-13) 453次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

需要频繁的插入删除操作使用什么结构比较合适?

数组
队列
链表

采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找()


下列叙述哪些是对的?

线性表的逻辑顺序与物理顺序总是一致的。
线性表的顺序存储表示优于链式存储表示。
线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
二维数组是每个元素都为顺序表的顺序表 .
每种数据结构都应具备三种基本运算:插入、删除和搜索。

下面描述中正确的为?

线性表的逻辑顺序与物理顺序总是一致的。
线性表的顺序存储表示优于链式存储表示。
线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
二维数组是其数组元素为线性表的线性表。

用向量和单链表示的有序表均可使用折半查找方法来提高查找速度()


有n个数存放在一维数组A[1,n]中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度不同()


关于 int a[10]; 问下面哪些不可以表示 a[1] 的地址?

a+sizeof(int)
&a[0]+1
(int*)&a+1
(int*)((char*)&a+sizeof(int))

下面有关数据结构的说法是正确的?

数组和链表都可以随机访问
数组的插入和删除可以 O(1)
哈希表没有办法做范围检查
以上说法都不正确

稀疏矩阵压缩的存储方法是:()

三元组
二维数组
散列
十字链表

线性结构的是()


链式存储栈
顺序存储栈
顺序存储二叉树

下述哪一条是顺序存储结构的优点?()

插入运算方便
可方便地用于各种逻辑结构的存储表示
存储密度大
删除运算方便

对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确的是()

每次分区后,先处理较短的部分
每次分区后,先处理较长的部分
与算法每次分区后的处理顺序无关
以上三者都不对

下面关于线性表的叙述中,错误的是哪一个()

线性表采用顺序存储,必须占用一片连续的存储单元
线性表采用顺序存储,便于进行插入和删除操作
线性表采用链接存储,不必占用一片连续的存储单元
线性表采用链接存储,便于插入和删除操作

线性表是具有n个()的有限序列(n>0)

表元素
字符
数据元素
数据项
信息项

下列代码的输出为:

#include "iostream"  
#include "vector"  
using namespace std;  
   
int main(void)  
{  
    vector<int>array;  
    array.push_back(100);  
    array.push_back(300);  
    array.push_back(300);  
    array.push_back(500);  
    vector<int>::iterator itor;  
    for(itor=array.begin();itor!=array.end();itor++)  
    {  
        if(*itor==300)  
        {  
            itor = array.erase(itor);  
        }  
    }  
    for(itor=array.begin();itor!=array.end();itor++)  
    {  
        cout<<*itor<<" ";  
    }  
    return 0;  
}  

100 300 300 500
100 300 500
100 500
程序错误

给出以下定义:
char acX[]=”abcdefg”;
char acY[]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’};
则正确的叙述为


数组acX和数组acY等价
数组acX和数组acY的长度相同
数组acX的长度大于数组acY的长度
数组acX的长度小于数组acY的长度

下列关于线性表中的链表描述正确的是?

适用于数据项数量不能预知的情况。
逻辑相邻的2元素的存储空间可以是不连续的。
链表节点一般有数据元素和指针域两部分组成。
存储空间需要动态分配。

从两个数组的最后一个元素比较两个数组中不同元素的个数

如有 array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从 array1[4]与 array2[2]比较开始,到 array1[2] 与 array[0]比较结束。这样得出它们不同的元素个数为 0,若 array1[6]={77,21,1,3,5,7},那 么他们不同的元素为 3。
函数原型为 int compare_array( int len1, int array1[], int len2, int array2[] ); 其中,len1 与 len2 分别为数组 array1[]和 array2[]的长度,函数返回值为两个数组不同元素的个数。

/* diff_num.cpp */
#include <stdio.h>
int compare_array( int len1, int array1[], int len2, int array2[] )
{
    int i, t, small, num = 0;
     /* 把两数组倒置 */
     for ( i = 0; i < len1 / 2; i++ )
     {
        t = array1[i];
        array1[i] = array1[len1 - i - 1];
        array1[len1 - i - 1]    = t;
     }
     for ( i = 0; i < len2 / 2; i++ )
     {
        t = array2[i];
        array2[i] = array2[len2 - i - 1];
        array2[len2 - i - 1]    = t;
     }
 
    if ( len1 > len2 )
        small = len2;
    else
        small = len1;
    num = small;
    for ( i = 0; i < small; i++ )
    {
        if ( array1[i] == array2[i] )
        num--;
    }
    printf( "num=%d\n", num );
    return(num);
}
void main()
{
    int array1[5] = { 77, 21, 1, 3, 5 }, array2[3] = { 1, 3, 5 };
    int len1 = 5, len2 = 3;
    compare_array( len1, array1, len2, array2 );
}

打印如下形式的矩阵;

n=5:
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21

n=6:
1 2 9 10 25 26
4 3 8 11 24 27
5 6 7 12 23 28
16 15 14 13 22 29
17 18 19 20 21 30
36 35 34 33 32 31

先申请一个(n+1)^2的二维数组,然后按照先放行再放列的,或者先放列后放行的顺序(有个顺序标志flag)填充数组一个大循环(1~~n)里面套四个小循环就可以了

丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:数据结构题库之数组(六)
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00