错题本-笔试强训48天

在这里插入图片描述


在这里插入图片描述
链接:https://www.nowcoder.com/questionTerminal/9316826838a644b3a66ff1e9e610eb34?orderByHotValue=1&mutiTagIds=570_639&page=6
来源:牛客网

成员变量和局部变量的区别
1、成员变量是独立于方法外的变量,局部变量是类的方法中的变量
1)、成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用。
2)、局部变量:包括形参,方法局部变量,代码块局部变量,存在于方法的参数列表和方法定义中以及代码块中。
2、成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及 static修饰;两者都可以定义成final型。
3、成员变量存储在堆,局部变量存储在栈。局部变量的作用域仅限于定义它的方法,在该方法的外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量。
4、局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用域的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员变量,它和对象的生存期相同。而静态成员变量的生存期是整个程序运行期。
5、成员变量在累加载或实例被创建时,系统自动分配内存空间,并在分配空间后自动为成员变量指定初始化值,初始化值为默认值,基本类型的默认值为0,复合类型的默认值为null。(被final修饰且没有static的必须显式赋值),局部变量在定义后必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。
6、局部变量可以和成员变量 同名,且在使用时,局部变量具有更高的优先级,直接使用同名访问,访问的是局部变量,如需要访问成员变量可以用this.变量名访问
本例中i为成员变量,有默认的初始值,如果定义在方法内部,就没有初始值


在这里插入图片描述答案:D
在这里插入图片描述在这里插入图片描述


在这里插入图片描述在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述


在这里插入图片描述答案:编译出错
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述***
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述


在这里插入图片描述答案:编译错误

子类构造方法在调用时必须先调用父类的,由于父类没有无参构造,所以必须在子类中显式调用,用super()进行调用,放第一行
修改子类构造方法如下即可:

	public Derived(String s){
    
    
        super("s");
        System.out.print("D");
    }

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述答案 :BCD
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述final用于可以声明属性和方法,分别表示属性的不可变及方法的不可重写
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
答案:A

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
答案为:C


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


public class Test {
    
    
    public static void main(String [] args){
    
    
        System.out.println(new B().getValue());  //17
    }
    static class A{
    
    
        protected int value;              //10  22  169
        public A(int v) {
    
    
            setValue(v);
        }
        public void setValue(int value){
    
    
            this.value = value;          //   10   22   16   34
        }
        public int getValue(){
    
    
            try{
    
    
                value++;                 //11   17
                return value;            //11   17
            } catch(Exception e){
    
    
                System.out.println(e.toString());
            } finally {
    
    
                this.setValue(value);     // 
                System.out.println(value);  // 22   34
            }
            return value;
        }
    }
    static class B extends A{
    
    
        public B() {
    
    
            super(5);
            setValue(getValue() - 3);  //11  11-3=8
        }
        public void setValue(int value){
    
         //   5   11   8   17
            super.setValue(2 * value);       //   10    22   16   34
        }
    }
}



在这里插入图片描述
答案为:D
在这里插入图片描述

详解链接:https://blog.csdn.net/zhumintao/article/details/53818972


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
链接:https://www.nowcoder.com/questionTerminal/643b145a860f457d8a150869e1a17eba?orderByHotValue=0&done=0&pos=17&mutiTagIds=570&onlyReference=false
来源:牛客网

本题是一个自动拆装箱的考题(自动拆装箱JDK需在1.5上),下面的讨论都不针对新开辟对象的情况:
1、基本型和基本型封装型进行“”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;
2、两个Integer类型进行“
”比较,如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true(无值在-128至127的限制)
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。

int a=257;
Integer b=257;
Integer c=257;
Integer b2=57;
Integer c2=57;
System.out.println(a==b);
//System.out.println(a.equals(b));  编译出错,基本型不能调用equals()
System.out.println(b.equals(257.0));
System.out.println(b==c);
System.out.println(b2==c2);

因此上面的代码的结果因此为 true, false, false, true


在这里插入图片描述

在这里插入图片描述

try/catch是捕获并处理异常,捕获异常的目的就是为了继续向后执行;
throw是抛出异常,告诉调用者我有异常走不下去了,你看着办吧,throw之后方法返回;
finally是“处理完异常之后”“抛出异常之前”首先必须执行的代码段。

在这里插入图片描述


以下声明合法的是
A default String s
B public final static native int w( )
C abstract double d
D abstract final double hyperbolicCosine( )

正确答案: B 你的答案: A (错误)

A:变量不能被defalut修饰

B:native修饰方法,native修饰的方法简单来说就是:一个Java方法调用了一个非Java代码的接口。定义navtive方法时,并不提供实现体,因为其实现体是用非Java语言在外面实现的。**native可以和任何修饰符连用,abstract除外。**因为native暗示这个方法时有实现体的,而abstract却显式指明了这个方法没有实现体。

C:abstract修饰方法和类

D:final修饰的方法不能被重写。而abstract定义的方法没有实现,必须被子类重写,明显不能一起使用。


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

结论
1、不管有木有出现异常,finally块中代码都会执行;

2、当try和catch中有return时,finally仍然会执行;

3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的.finally{}代码块比return先执行。;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。


在这里插入图片描述
链接:https://www.nowcoder.com/questionTerminal/15b1429e6c364c3bbe6e8134a519f2a3
来源:牛客网

本题答案应为:B、C、D
------------知识点------------
Java表达式转型规则由低到高转换:
1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;

3、如果有一个操作数是float型,计算结果是float型;

4、如果有一个操作数是double型,计算结果是double型;
5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
--------------解析--------------
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;

语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;

语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);

语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变。


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
答案:C

常量池:未经 new 的常量
堆区:成员变量的引用,new 出来的变量。
栈区:局部变量的引用

成员变量的引用在堆区,是因为成员变量的所属对象在堆区,所以它也在堆区。见 https://blog.csdn.net/leunging/article/details/80599282。
局部变量的引用在栈区,是因为局部变量不属于某一个对象,在被调用时才被加载,所以在栈区。
链接:https://www.nowcoder.com/questionTerminal/51123ddacab84a158e121bc5fe3917eb?toCommentId=28446
来源:牛客网

方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
3.字符串常量池就是存放在方法区。

final 修饰的变量只能表示它是不可变的,不能代表它就是常量,如果是final static修饰的话就是常量了

classA{
    
    
	privateString a = “aa”; // a 为成员变量的引用,在堆区,“aa”为未经 new 的常量,在常量池
	publicboolean methodB() {
    
    
		String b = “bb”; // b 为局部变量的引用,在栈区,“bb”为未经 new 的常量,在常量池
		final String c = “cc”; // c 为局部变量的引用,在栈区,“cc”为未经 new 的常量,在常量池
	}
}

在这里插入图片描述


在这里插入图片描述
答案是:10
在这里插入图片描述


在这里插入图片描述

答案:A
解析:提供Java存取数据库能力的包是java.sql。
B、java.awt是图形界面的包;
C、java.lang是Java中常用方法最多的包,定义了Java中的大多数基本类;
D、java.swing是图形界面包。


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


下面关于volatile的功能说法正确的是哪个
正确答案: B C
原子性
有序性
可见性
持久性
解析:synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性


在这里插入图片描述
答案:C
在这里插入图片描述


public void getCustomerInfo() {
    
    
	try {
    
    
		// do something that may cause an Exception
	} catch (java.io.FileNotFoundException ex) {
    
    
		System.out.print("FileNotFoundException!");
	} catch (java.io.IOException ex) {
    
    
		System.out.print("IOException!");
	} catch (java.lang.Exception ex) {
    
    
		System.out.print("Exception!");
	}
} 

A IOException!
B IOException!Exception!
C FileNotFoundException!IOException!
D FileNotFoundException!IOException!Exception!

答案:A

解析:考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。


在这里插入图片描述

FileInputStream提供了对文件的字节读取;FileReader提供了对文件的字符读取;FileWriter提供了对文件的字符写入;File提供了对文件的基本操作,包括对删除,文件路径等操作。


在这里插入图片描述

答案:FileNotFoundException

在这里插入图片描述


在这里插入图片描述
答案:D
该题的详细分析可参见博客:http://www.cnblogs.com/nailperry/p/4780354.html
这里简单说明两点:

  1. b = b++;这一操作并未改变b的值。到此可得出结论,add方法只是个摆设,没有任何作用,不修改实参的值。
  2. ++a先是触发拆箱操作Byte.byteValue,得到基本类型的值127,然后执行+1操作,使得值变为-128,最后触发装箱操作Byte.valueOf将value=-128的Byte对象赋值给a。
    在这里插入图片描述
    add函数中参数类型是Byte传的是引用,而不是值,因此不能实现自增的目的,但是++a作为参数传入的时候是a=a+1;Byte拆箱为127然后加1,超出了范围,因此是-128

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
第一范式:主属性(主键)不为空且不重复,字段不可再分(存在非主属性对主属性的部分依赖)
第二范式:如果关系模式是第一范式,每个非主属性都没有对主键的部分依赖。
第三范式:如果关系模式是第二范式,没有非主属性对主键的传递依赖和部分依赖。
BCNF范式:所有属性都不传递依赖于关系的任何候选键。

码(键,主属性):假如当K确定的情况下,该表除K之外的所有属性的值也就随之确定,那么K就是码。
主属性:包含在任意一个码中的属性成为主属性。
非主属性:不包含在任意一个码中的属性成为主属性。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
参考:数据库第一二三范式到底在说什么?


2、下面不属于数据库系统特点的是( A )

A 数据冗余度高
  B 数据具有完整性
  C 数据共享性好
  D 数据独立性高

分析: 数据库系统的特点:

数据共享性高,冗余度小;
具有高度的物理独立性和逻辑独立性;
整体结构化,用数据模型描述;
由数据库系统提供数据安全性、完整性、 并发控制和恢复能力。
   简单说即数据库系统的特点为高共享、低冗余、独立性高、具有完整性等。故本题答案为 A 选项。


3、将实体-联系模型转换为关系模型时,实体之间多对多联系在关系模型中的实现方式是( A )

A 建立新的关系
  B 建立新的属性
  C 增加新的关键字
  D 建立新的实体

分析:

将实体-联系模型转换为关系模型时,一个m:n的联系可以转换为一个独立的关系模式,与该联系相连的各实体的码及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。故本题答案为A选项


8、某关系表有:员工(部门编号,部门名称,员工编号,姓名,性别,年龄),则其主码为( A )

A 部门编号、员工编号
  B 员工编号
  C 姓名
  D 部门编号

分析:

由于一个员工可能属于多个部门(如CEO等),所以主码应该选A


在这里插入图片描述
答案为 sum


9、在使用 limit 子句时,如果没有足够的行,则(B)

A MySQL会报错
  B MySQL将只返回它能返回的那么多行
  C MySQL将不会返回任何行


有三个关系 R 、 S 和 T 如下, 则由关系 R 和 S 得到关系 T 的操作是( C )
在这里插入图片描述

A 自然连接
  B 交
  C 除
  D 并

分析:

如果 S = T/R ,则 S 称为 T 除以 R 的商。在除运算中 S 的域由 T 中那些不出现在 R 中的域所组成,对于 S 中的任一有序组,由它与关系 R 中每个有序组所构成 的有序组均出现在关系 T 中。所以本题选择 C 。


在这里插入图片描述
答案:B
在这里插入图片描述


在这里插入图片描述
答案:D

自然连接要求两个关系中至少有一个属性(列标题)相同,具有将相同的属性的元组连接在一起,不同的舍弃。题中R和S两个关系中都有一个A属性列,同时该列都有一个行值为c,所以把这两行连接起来就行了。


语句 SELECT IF(-1,5,2) 的返回值是:
2
6
-1
5

今天遇到一道关于数据库的题,专门查了一下,在这里总结一下:
if(条件,表达式1,表达式2);
这里,如果条件为真(非0),则返回表达式1,条件为假(0)返回表达式2.
所以答案是5;


在这里插入图片描述
选B,自连接只有一张表


10.数据库中存在学生表S、课程表C和学生选课表SC三个表,它们的结构如下:S(S#,SN,SEX,AGE,DEPT)C(C#,CN)SC(S#,C#,GRADE)其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。请检索选修课程号为C2的学生中成绩最高的学号。(D )
原因解析:

只要学号直接排除A
成绩最高使用ALL,>=就是大于等于ALL后面的最大值;
如果是小于就是小于ALL后面的最小值;
在这里插入图片描述


7.在下面的两个关系中,职工号和部门号分别为职工关系和部门关系的主键(或称主码)职工(职工号、职工名、部门号、职务、工资) 部门(部门号、部门名、部门人数、工资总额) 在这两个关系的属性中,只有一个属性是外键(或称外来键、外码、外来码),它是 B
原因解析:

外键在另外一张表中必须是主键;
在这里插入图片描述


设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录,ID从0到9,以下代码输出结果是(C)
原因解析:

mysql_num_fields:返回结果集中字段数(id,name,age)是3个字段;

在这里插入图片描述


设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是()

步骤          T1         T2
1A=100
2A=100
3         A=A+10写回
4                      A=A-10写回

正确答案: D 你的答案: C (错误)

该操作不能重复读
该操作不存在问题
该操作读"脏"数据
该操作丢失修改
解析

(1)丢失修改

    当两个或多个事物读入同一数据并修改,会发生丢失更新问题,即后一个事物更新的结果被前一事务所做更新覆盖 即当事务A和B同事进行时,事务A对数据已经改变但并未提交时B又对同一数据进行了修改(注意此时数据是A还未提交改变的数据),到时A做的数据改动丢失了

(2)不可重复读

  当两个数据读取某个数据后,另一事务执行了对该数据的更新,当前一事务再次读取该数据(希望与第一次读取的是相同的值)时,得到的数据与前一次的不一样,这是由于第一次读取数据后,事务B对其做了修改,导致再次读取数据时与第一次读取的数据不想同

(3)读‘脏数据’

 当一个事务修改某个数据后,另一事务对该数据进行了读取,由于某种原因前一事务撤销了对改数据的修改,即将修改过的数据恢复原值,那么后一事务读到的数据与数据可得不一致,称之为读脏数据

在这里插入图片描述

关系与关系间的相关联系就是表和表之间的连接,那就是外键.主从关系通过外键实现
1.基本概念
超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键/码。
候选键(candidate key):不含有多余属性的超键称为候选键,即其真子集不再是超键。
主键(primary key):用户选作元组标识的一个候选键称为主键,是候选键之一。

2.关系
候选键是超键的子集,主键是候选键中的一个。

3.举个栗子
考虑属性集(身份证号,姓名 ,性别 ,年龄),假设无重名

a.其中超键有:
身份证号、姓名、(姓名,性别)、(姓名,性别,年龄)等

–这里可以看出,超键是能唯一确定一个人的属性组

b.超键中的候选键
身份证号、姓名唯一,而且没有多余属性,所以是一个候选键

–这里可以看出,候选键是没有多余属性的超键

c.选择主键
用户可根据自己喜好考虑选择姓名或者身份证号作为主键

–主键是选中的一个候选键

4.还不明白?
实例:在SQL Server数据库中,有一个学生信息表如下所示,在该表中不能作为候选键的属性集合为( ) (选择一项)
学号 姓名 性别 年龄 系别 专业
20020612 李辉 男 20 计算机 软件开发
20060613 张明 男 18 计算机 软件开发
20060614 王小玉 女 19 物理 力学
20060615 李淑华 女 17 生物 动物学
20060616 赵静 男 21 化学 食品化学
20060617 赵静 女 20 生物 植物学
a){学号}
b){学号、姓名}
c){年龄、系别}
d){姓名、性别}
e){姓名、专业}

1、书中的定义
超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

主键(primary key): 用户选作元组标识的一个候选键程序主键

外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

2、咱们创建简单的两个表,说明一下各个键!
学生信息(学号 身份证号 性别 年龄 身高 体重 宿舍号)和 宿舍信息(宿舍号 楼号)

超键:只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号 性别)、R2(身份证号 身高)、R3(学号 身份证号)等等都可以称为超键!

候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!

主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了!

外键:宿舍号就是学生信息表的外键


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
答案:C


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述答案:D
在这里插入图片描述
在这里插入图片描述
MODIFY 是用来改变表列性质;ADD是增加列;
用法:ALTER TABLE 表名 MODIFY(列名,列的性质(新));
MODIFY和ADD使用时都要用到修改命令ALTER.
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


电话号码表t_phonebook中含有100万条数据,其中号码字段phoneon上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法执行速度最慢的是( )。

A. select count (*)from t_phonebook where phoneno>=“321” and phoneno<“321A”

B. select count (*)from t_phonebook where phoneno like"321%"

C. select count (*)from t_phonebook where substr(phoneno,1,3)=“321”

D. select count (0)from t_phonebook where phoneno like"321%"

参考答案:C
图图解析:
这道题,分析思路是从索引是否失效出发!A项:使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,一般大于5%-15%就不走索引而走FTS(全表扫描)。所以A项可能索引失效也可能不失效,不当选;C项:在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算,索引失效。需要建立函数索引就便可以解决,C项是最慢的。当选;故本题正确答案选C。


在这里插入图片描述


在这里插入图片描述
答案: C


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
答案:C
在这里插入图片描述


在这里插入图片描述
答案是D
(1)返回的是表的行数,如果没有记录,应该返回0,不会出现NULL,
(2) 和(3) 正常情况下不会出现NULL,但是如果表里面没有记录,则会出现NULL

MySQL concat函数使用方法:
CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

答案选D, 原因如下:
(1). 若表t1中有记录,会返回记录数;若无记录,则返回0;
(2). 若表t1中存在列col为null, 则结果返回null;
(3). 若表t1中存在列col为null, 则结果返回null;

综上所述,答案选D。


2.下列数据结构中,不适合采用顺序存储结构的是(A )
A 非完全二叉树
B 堆
C 队列----------循环队列可以
D 栈


在这里插入图片描述


在这里插入图片描述
以下位层序遍历的结果
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
哈希函数的构造方法:
①数字分析法
②平方取中法
③除留取余法
④分段叠加法

处理冲突的方法:
①开放地址法(包括线性探测法、二次探测法、伪随机探测法)
②链地址法
③多重散列法


在这里插入图片描述

数据的逻辑结构分为线性结构和非线性结构。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
常见的非线性结构有:二维数组,***数组,广义表,树(二叉树等),图,堆。


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


  1. 下列排序法中,每经过一次元素的交换会产生新的逆序的是(C)

A 冒泡排序 B 简单选择排序 C 快速排序 D 简单插入排序

冒泡排序只交换相邻元素,但不是每次移动都产生新的逆序。简单插入排序的元素移动不会产生新的逆序。快速排序每一次交换移动都会产生新的逆序,因为当不会有新的逆序产生时,本轮比较结束。


在这里插入图片描述


在这里插入图片描述
4.循环两列放在一维数组A[0……M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可以进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空,判断队空和队满。

分析:循环队列的相关条件和公式:
队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度:

  1. 队空条件:rear==front
  2. 队满条件:(rear+1)%QueueSIze==front
  3. 计算队列长度:(rear-front+QueueSize)%QueueSize
  4. 入队:(rear+1)%QueueSize
  5. 出队:(front+1)%QueueSize

当队列为空时,end1表示队头,end2表示队尾的下一个位置,如果end1==end2.可以得出队列中是没有元素的。

当队列为满时,因为end2指向队尾下一个位置,而这个队被放在一个一维数组中,所以最多容纳M-1个元素,如果容纳了M个,队尾指针end2就变成了野指针,因为指向的就不是数组内元素。end1==(end2+1),这样想,假如队满,队头end1在0位置,队尾元素在M-2位置,end2在M-1位置。所以得出 (end2+1)modM


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
答案为:13,由于n0 = n2+1


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_43398758/article/details/123626544