寒假作业Day 10

寒假作业Day 10

一、选择题

1、下列数据结构中,不属于线性表的是( )
A.队列 B.顺序表 C.二叉树 D.链表

A. 队列:队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。因此,队列是线性表。
B. 顺序表:顺序表是用一段地址连续的存储单元依次存储线性表的数据元素。它也是线性表的一种实现方式。
C. 二叉树:二叉树是每个节点最多有两个子节点的树结构,通常子节点被称作“左孩子”和“右孩子”。二叉树并不是线性表,因为它的元素不是按照线性顺序排列的。
D. 链表:链表是一种物理存储单元上非连续的、非顺序的线性数据结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。因此,链表也是线性表的一种实现方式。

2、对于一个头指针为 head 的带头结点的单链表,判断该表为空的条件是( )
A. head=NULL B. head→next==NULL C. head→next=head D. head!=NULL

因为头节点只是哨兵位,是不参与单链表的增删查改的,所以头节点的下一个节点才是真正的头节点,所以判断该表为空的条件为head->next==NULL

3、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用什么存储结构?( )
A. 顺序表 B. 单链表 C. 循环链表 D. 双链表

因为要以最快的速度存取元素,并且很少插入和删除,所以我们选择顺序表,因为其他几个链表都需要遍历才可以存取元素,而顺序表可以直接通过下标查找

在这里插入图片描述

这个画图可以很清晰噢~
在这里插入图片描述
把head当作L指向的内容,而3当作p指向的内容,那么很明显,p->next==L,L->prior ==p

在这里插入图片描述

选择C噢,要先把新节点跟旧节点后面的节点连接起来,再把新节点与旧节点连接起来,不然会丢掉后续节点

二、编程题

在这里插入图片描述

int search(int* nums, int numsSize, int target) {  int n = numsSize;  // 如果数组为空,则直接返回-1表示未找到目标值  if (!n) {  return -1;  }  // 如果数组只有一个元素,直接判断这个元素是否等于目标值  if (n == 1) {  return nums[0] == target ? 0 : -1;  }  // 定义搜索范围的起始和结束索引  int begin = 0, end = n - 1;  // 当搜索范围有效时继续循环  while (begin <= end) {  // 计算中间元素的索引  int mid = (begin + end) / 2;  // 如果中间元素等于目标值,直接返回其索引  if (nums[mid] == target) return mid;  // 检查左侧部分是否是有序的  if (nums[0] <= nums[mid]) {  // 如果目标值在有序部分的范围内,更新结束索引  if (nums[0] <= target && target < nums[mid]) {  end = mid - 1;  } else {  // 否则,更新起始索引  begin = mid + 1;  }  } else {  // 检查右侧部分是否是有序的  // 如果目标值在有序部分的范围内,更新起始索引  if (nums[mid] < target && target <= nums[n - 1]) {  begin = mid + 1;  } else {  // 否则,更新结束索引  end = mid - 1;  }  }  }  // 如果循环结束还没有找到目标值,则返回-1  return -1;  
}

在这里插入图片描述

int getDecimalValue(struct ListNode* head) {ListNode* phead=head;int count=0;  int result=0;  while(phead){count++;//遍历链表先记录有多少个节点phead=phead->next;}phead=head;//刷新位置while(phead){if(phead->val==1)result+=pow(2,count-1);//遍历的同时加值,count-1的原因是因为假如有3个节点,101,最高的位置也是2^2,而非2^3,这是需要注意的问题count--;//次方逐步下降phead=phead->next;}return result;
}

这是简单粗暴的解法,很容易看出,它的时间复杂度是O(N^2),过于高,如果数据过大,效率很受影响,所以我们还有另外一种解法

int getDecimalValue(ListNode* head) {ListNode* cur = head;int ans = 0;while (cur != NULL) {ans = ans * 2 + cur->val;cur = cur->next;}return ans;
}

很明显可以看出,这里的时间复杂度就只有O(N)了,它是从最高位开始,在遍历的过程逐步乘2;比如101,第一个1乘了2次,第2个0乘了1次,第三个1乘了0次,也就是按照原本的值计算,这是一种更加巧妙的方法,虽然一开始不容易想到,但是效率高了很多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527248.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试相关内容第三弹--软件测试基础

写在前&#xff1a;在前篇的两篇博客介绍中我们主要学习软件测试的相关概念&#xff0c;对软件测试进行了初步的了解&#xff0c;本篇博客将进一步进行学习。重点内容包括&#xff1a;软件测试的生命周期、如何描述一个bug、如何定义bug的级别、bug的生命周期以及在实际工作中如…

【Claude3】利用Python中完成对Bedrock上的Claude的API调用

文章目录 1. 前期准备工作2. 安装和配置AWS CLI v23. 使用AWS configure命令配置AWS凭据4. 安装访问Bedrock的SDK5. 访问Amazon Bedrock UI6. 订阅Bedrock上的Claude模型7. 通过CLI命令列出所有可用的Claude模型8. 向Claude 3 Sonnet on Bedrock生成文本9. 参考链接 1. 前期准备…

基础 | JVM - [指令 性能监控]

INDEX jps&#xff08;jvm 进程工具&#xff09;jinfo&#xff08;java 配置信息工具&#xff09;jstack &#xff08;查看虚拟机栈信息&#xff09;jmap&#xff08;jvm 内存影像工具&#xff09;jstat&#xff08;jvm 统计信息监控工具&#xff09;jvisualvm&#xff08;查看…

《vtk9 book》 官方web版 第3章 - 计算机图形基础 (4 / 5)

3.10 将所有内容整合起来 本节概述了图形对象以及如何在 VTK 中使用它们。 图形模型 我们已经讨论了许多在场景渲染中起作用的对象。现在是将它们整合到一个全面的图形和可视化对象模型中的时候了。 在可视化工具包中&#xff0c;有七个基本对象用于渲染场景。幕后有许多其他对…

Windows下安装pip

一、下载pip 官网地址&#xff1a;https://pypi.org/project/pip/#files 1.1、pip工具查找方法 单击官网首页“PyPi”选项 在弹出来的搜索框中输入“pip” 选择最新的pip版本&#xff0c;点进去 下载pip安装包包 二、安装pip 解压“pip-24.0.tar.gz”&#xff0c;进…

数据结构与算法:链式二叉树

上一篇文章我们结束了二叉树的顺序存储&#xff0c;本届内容我们来到二叉树的链式存储&#xff01; 链式二叉树 1.链式二叉树的遍历1.1二叉树的前序&#xff0c;中序&#xff0c;后序遍历1.2 三种遍历方法代码实现 2. 获取相关个数2.1获取节点个数2.2获取叶节点个数2.3 获取树的…

el-table 插入输入框并进行校验

<template><div><el-form :model"list" ref"ruleForm"><el-table :data"list.tableData" style"width: 100%"><el-table-column prop"time" label"日期" width"180"><…

电子电器架构 —— 车载网关路由表和刷写场景

电子电器架构 —— 车载网关路由表和刷写场景 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数5000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有…

B端树结构组件:各类样式示例(以elementUI为例)和应用案例

hello&#xff0c;我是贝格前端工场&#xff0c;随着对B系统探讨的越来越多&#xff0c;收获了不少点赞和粉丝&#xff0c;我们准备深入研究下去&#xff0c;这次开始研究B端各类组件&#xff0c;欢迎继续点赞关注转发。 一、树结构及其特征 B端树结构组件是一种用于构建B端系…

Delphi 的Read 与Readln 的区别

结合运行窗口&#xff0c;你输入1 2 3 4 这是一行ReadLn在读入时把这四个数当成一行&#xff0c;read(a,b)只读入了前两个数&#xff1a;1 2&#xff0c;就准备读下一行了&#xff0c;下一行输入3&#xff0c;再下一行输入2&#xff0c;所以输出1232&#xff1b; Read是逐个读…

重启 explorer 进程的正确做法(二)

重启资源管理器进程的方法不唯一&#xff0c;但长期以来大家对实施方法用的不到位。 在上一篇中我认为&#xff1a;“我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe )&#xff0c;其实这是不正确的。我…

贪吃蛇(C语言实现)

贪食蛇&#xff08;也叫贪吃蛇&#xff09;是一款经典的小游戏。 —————————————————————— 本博客实现使用C语言在Windows环境的控制台中模拟实现贪吃蛇小游戏。 实行的基本功能&#xff1a; • 贪吃蛇地图的绘制 • 蛇吃食物的功能&#xff08;上、…