首页 > 其他分享 >信息学奥赛初赛天天练-43-CSP-J2020基础题-链表、连通图、2进制转10进制、栈、队列、完全二叉树、哈希表应用

信息学奥赛初赛天天练-43-CSP-J2020基础题-链表、连通图、2进制转10进制、栈、队列、完全二叉树、哈希表应用

时间:2024-07-10 19:56:10浏览次数:20  
标签:结点 进制 连通 初赛 链表 二叉树 哈希 节点

PDF文档公众号回复关键字:20240710
在这里插入图片描述

2020 CSP-J 选择题

单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)

7.链表不具有的特点是()

A.可随机访问任一元素

B.不必事先估计存储空间

C.插入删除不需要移动元素

D.所需空间与线性表长度成正比

8.有 10 个顶点的无向图至少应该有( )条边才能确保是一个连通图

A.9

B.10

C.11

D.12

9.二进制数 1011 转换成十进制数是( )

A.11

B.10

C.13

D.12

11.下图中所使用的数据结构是( )

A.栈

B.队列

C.二叉树

D.哈希表

12.独根树的高度为 1。具有 61 个结点的完全二叉树的高度为( )

A.7

B.8

C.5

D.6

2 相关知识点

1) 链表

是一种常见的数据结构,它是由一系列节点(Node)组成,每个节点包含两部分:数据域和指针域。数据域用于存储数据,指针域用于存储下一个节点的地址。链表的第一个节点称为头节点(Head),最后一个节点称为尾节点(Tail),尾节点的指针域指向空(NULL)

链表占用空间大小,和链表的长度有关,没增加一个节点,增加一个数据节点和一个指针节点,存储空间和链表长度成正比

随机存取

随机存取(直接存取,Random Access)指的是当存储器中的数据被读取或写入时,所需要的时间与该数据所在的物理地址无关

顺序存取

顺序存取 (Sequential Access)是一种按记录的逻辑顺序进行读、写操作的存取方法,所需要的时间与该数据所在的物理地址有关。

顺序存取表现为:在存取第N个数据时,必须先访问前(N-1)个数据

#include<bits/stdc++.h>
using namespace std;
/*
  随机存取、顺序存取 
*/ 
int a[10]={0,1,2,3,4,5,6,7,8,9}; 
int main(){
	cout<<a[9]<<endl;//随机读取下标为9的元素 输出 9  

	for(int i=0;i<10;i++){//顺序存储 逐一读取 
		cout<<a[i]<<" ";		
	}
	return 0;
}

数组可以随机以及顺序存取,而链表只能顺序存取

内存分配

数组静态分配内存,定义时指定内存大小,链表动态分配内存,使用是指定内存大小

数组是一种线性表数据结构,有一组连续的内存空间,链表是通过指针将一组零散的内存块串联起来使用的数据结构,不需要一块连续的内存空间

链表的删除

链表通过指针建立起数据之间的联系,删除节点时,只需要改变对应的指针指向即可,不需要移动数组的元素

2) 连通图

连通性

如果任意两点间存在路径,此图具有连通性

无向图的连通性

任意两点是连通的,任意两点都可以形成通路

最小边数

n个节点的无向连通图最小边数为n-1条边

树为一种连通图,n个节点的树,边数为n-1

3) 2进制转10进制

按权展开,但要注意各个位的权,最低位(最右边)的权是0次方,权值为1

向左为2^1, 2^2, 2^3, 2^4, 2^5…

(11010110)2=1×2^7+1×2^6+0×2^5+1×2^4+0×2^3+1×2^2+1×2^1+0×2^0=(214)10

向右,小数部分,2^(-1), 2^(-2), 2^(-3), 2^(-4), 2^(-5)…

(1011.01)2=(1*2^3+1*2^1+1*2^0+1*2^(-2))=8+2+1+0.25=11.25

4) 数据结构

栈又名堆栈,是一种限定仅在表尾进行插入和删除操作的线性表,这一端称为栈顶,另一端称为栈底

栈中的数据元素遵守后进先出的原则

在这里插入图片描述

队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(tail)进行插入操作

队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头

队列可以理解成我们平时的排队,先进入的先出去

二叉树

每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒

例如下面是一棵二叉树

完全二叉树

除了最下层,其他每层都饱满,去除最后一层是一棵满二叉树,最下层的结点都集中在该层最左边的若干位置上

哈希表

哈希表(Hash Table)是一种通过键(key)直接访问存储在内存中的特定位置的值(value)的数据结构。它支持快速的查找、添加和删除操作,其平均时间复杂度为O(1)

哈希表的工作原理基于哈希函数,该函数将键映射到数组的索引位置,可以随机读取

3 思路分析

7.链表不具有的特点是( A )

A.可随机访问任一元素

B.不必事先估计存储空间

C.插入删除不需要移动元素

D.所需空间与线性表长度成正比

分析

链表只能顺序访问,不能随机访问

8.有 10 个顶点的无向图至少应该有( A )条边才能确保是一个连通图

A.9

B.10

C.11

D.12

分析

无向连通图,需要每2个节点都可以连通,n个节点,需要n-1条边,所以选A

如下图4个结点,3条边是连通图,任意2个结点都是连通的

9.二进制数 1011 转换成十进制数是( A )

A.11

B.10

C.13

D.12

分析

/*
按权展开,最低位(最右边)的权是0次方,权值为1
向左为2^1, 2^2, 2^3, 2^4, 2^5......
*/
(1011)2=1*2^3+0*2^2+1*2^1+1*2^0=8+0+2+1=11

11.下图中所使用的数据结构是( A )

A.栈

B.队列

C.二叉树

D.哈希表

分析

栈的操作是后进先出,队列操作是先进先出

如图 A进 B 进 B 出 C 进 符合栈的操作

二叉树需要构造树,没有体现

哈希表需要对键进行哈希函数运算,没有体现

12.独根树的高度为 1。具有 61 个结点的完全二叉树的高度为( D )

A.7

B.8

C.5

D.6

分析

独根树的高度为1,一个节点时树的高度为1

完全二叉树的特点为:除最后一层,都是满的

满二叉树结点个数
    
高度 1  - 结点 1   -2^1-1
高度 2  - 结点 3   -2^2-1
高度 3  - 结点 7   -2^3-1
高度 4  - 结点 15  -2^4-1
高度 5  - 结点 31  -2^5-1
高度 6  - 结点 63  -2^6-1
61个结点,最后一层不满,所以高度为6,第6层不满
所以选D

标签:结点,进制,连通,初赛,链表,二叉树,哈希,节点
From: https://blog.csdn.net/ya888g/article/details/140332668

相关文章

  • Day4|24. 两两交换链表中的节点 & 19.删除链表的倒数第N个节点 & 面试题 02.07. 链表
    24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head=[1,2,3,4]输出:[2,1,4,3]这题很简单就不写思路了publicListNodeswapPairs(ListNodehead){L......
  • 19. 删除链表的倒数第 N 个结点
    [https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/?envType=study-plan-v2&envId=top-interview-150](19.删除链表的倒数第N个结点)mid(简单)快慢指针时间复杂度O(L)空间复杂度O(1)classSolution{publicListNoderemoveNthFromEnd(ListNode......
  • 【数据结构】—— 双向链表
    文章目录1、双向链表的概念2、双向链表的接口实现2.1结构2.2初始化申请节点2.3插入数据尾插头插指定位置之后插入数据2.4删除数据尾删头删指定位置删除2.5查找2.6打印2.7销毁3、链表和顺序表的区别4、问题与思考1、双向链表的概念双向链表(DoublyLinkedList)是......
  • Day3| 203.移除链表元素 & 707.设计链表 & 206.反转链表
    前两天发烧了,这几天没更的后续会补齐链表结构如下classListNode{intval;ListNodenext;ListNode(){}ListNode(intval){this.val=val;}ListNode(intval,ListNodenext){this.val=val;this.next......
  • 141. 环形链表
    给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅仅是为......
  • 数据结构--单向链表篇(python实现)
    写在开头链表(Linkedlist)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)链表的优缺点优点不需要预先知道数据大小,实现灵活的内存动态管理插入、删除指定数据速度快缺点读取指定位置数据速......
  • CSP-J1 CSP-S1 第1轮 初赛模拟题及书籍
    1、信奥学奥赛一本通初赛篇信息学奥赛一本通(C++版)在线评测系统15*2=30套模拟题(CSP-J115套、CSP-S115套)2、信息学奥赛CSP满分之路——CSP-JS第一轮原创全真模拟试卷集(2024)图灵社区20套模拟题(10套CSP-J+10套CSP-S)        普及组 CSP-J2024......
  • 138. 随机链表的复制
    138.随机链表的复制递归和哈希表时间&空间复杂度O(n)复杂链表的特点是每个节点除了有一个指向下一个节点的指针外,还有一个随机指针可能指向链表中的任意节点或null。通过递归和哈希表的方式,能够确保每个节点只被复制一次,并且正确地复制了next和random指针。/*//Definitionf......
  • [CINTA] 具体数论与代数阅读笔记——第一章 整数和二进制(含加、乘、除)
    前言这本书说自己是计算机专业数学入门之入门,成为读者攻读其他经典著作的垫脚石,但个人以为足矣替换掉本校内不知所云的、抽象的、让学生考完后马上全忘的那些课程。本书的GitHub仓库在这里。该笔记并非单纯的整理归纳,而是记录陆爻齐在书中找到的对自己很有感触的部分。闲话......
  • 线性表——静态链表(插入阉割版)
    #include<bits/stdc++.h>usingnamespacestd;#defineMaxSize3typedefstructSNode{ intdata; intnext;}SLinkList[MaxSize];//初始化voidInitList(SLinkListL){ L[0].data=0; //我这里放的是链表长度 for(inti=0;i<MaxSize;i++){ L[i].next=-1; }}//......