数据结构与算法课后题-第二章

news2024/11/18 19:43:36

第二章
在这里插入图片描述

在这里插入图片描述
01题目,存储相对紧凑,所以存储的密度大。
在这里插入图片描述
04题目,顺序表可以按照序号随机存取,时间的复杂度为O(1)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第7题目分析

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

#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];	
	int length;
}SqList;
//-----------------代码核心--------------------//
bool Del_Min(SqList &L, ElemType& value)
{
	if (L.length == 0)
		return false;
	value = L.data[0];
	int pos = 0;
	for (int i = 1; i < L.length; i++)
	{
		if (value > L.data[i])
		{
			value = L.data[i];
			pos = i;
		}
	}
	L.data[pos] = L.data[L.length - 1];
	L.length--;
	return true;
}
//---------------------------------------------------//
int main(void)
{
	SqList L;
	//初始化顺序表
	//...
	int value = 0;
	Del_Min(L, value);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//1 2 3 4 5 6  ----   6 5 4 3 2 1  length = 6
// 1 2 3 4 5 6 7  ----  7 6 5 4 3 2 1   length = 7
//-------------------------代码核心------------------------//
bool reverse(SqList& L)
{
	ElemType temp;   //辅助变量
	for (int i = 0; i <(L.length) / 2; i++)
	{
		temp = L.data[i];
		L.data[i] = L.data[L.length - 1 - i];
		L.data[L.length - 1 - i] = temp;
	}
	return true;
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList L;
	//初始化顺序表
	L.length = 6;
	for (int i = 0; i < L.length; i++)
		L.data[i] = i;
	reverse(L);
	for (int i = 0; i < L.length; i++)
		//cout << L.data[i] << endl;
		printf("L.data[%d]=%d\n", i, L.data[i]);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//-------------------------代码核心------------------------//
bool Delete_all_x_value(SqList& L, ElemType x)  //1 2 3 3 4 5
{
	int k = 0;
	for (int i = 0; i < L.length; i++)
	{
		if (L.data[i] != x)
		{
			L.data[k] = L.data[i];
			k++;
		}
	}
	L.length = k;
	return true;
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList L;
	//初始化顺序表
	L.length = 6;
	L.data[0] = 1;
	L.data[1] = 2;
	L.data[2] = 3;
	L.data[3] = 3;
	L.data[4] = 4;
	L.data[5] = 5;
	int value = 3;
	Delete_all_x_value(L,value);
	for (int i = 0; i < L.length; i++)
		//cout << L.data[i] << endl;
		printf("L.data[%d]=%d\n", i, L.data[i]);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//-------------------------代码核心------------------------//
//法1
//bool Delete_all_range_value(SqList& L, ElemType s, ElemType t)  //1 2 3 3 4 5
//{
//	int k = 0;
//	if (L.length == 0||s>=t)
//		return false;
//	for (int i = 0; i < L.length; i++)
//	{
//		if (L.data[i] < s|| L.data[i] > t)
//		{
//			L.data[k] = L.data[i];
//			k++;
//		}
//	}
//	L.length = k;
//	return true;
//}
bool Delete_all_range_value(SqList& L, ElemType s, ElemType t)  //1 2 3 3 4 5
{
	int i = 0, j = 0;
	if (L.length == 0||s>=t)//判断
		return false;
	for (i = 0; i < L.length && L.data[i] < s; i++); //寻找大于或等于s的第一个元素
	if(i>=L.length)  //所有的数都比s小
		return false;
	for (j = i; j < L.length && L.data[j] <= t; j++);//寻找大于t的第一个元素
	for (; j < L.length; i++, j++)
		L.data[i] = L.data[j];
	L.length = i;
	return true;
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList L;
	//初始化顺序表
	L.length = 6;
	L.data[0] = 1;
	L.data[1] = 2;
	L.data[2] = 3;
	L.data[3] = 3;
	L.data[4] = 4;
	L.data[5] = 5;
	int s = 2;
	int t = 3;
	Delete_all_range_value(L, s, t);
	for (int i = 0; i < L.length; i++)
	{
		printf("L.data[%d]=%d\n", i, L.data[i]);
	}
	printf("L.length=%d\n", L.length);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//-------------------------代码核心------------------------//
bool Delete_all_range_value(SqList& L, ElemType s, ElemType t)  //1 2 3 3 4 5
{
	int k = 0;
	if (L.length == 0||s>=t)
		return false;
	for (int i = 0; i < L.length; i++)
	{
		if (L.data[i]<s|| L.data[i] > t)
		{
			L.data[k] = L.data[i];
			k++;
		}
	}
	L.length = k;
	return true;
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList L;
	//初始化顺序表
	L.length = 6;
	L.data[0] = 1;
	L.data[1] = 2;
	L.data[2] = 3;
	L.data[3] = 3;
	L.data[4] = 4;
	L.data[5] = 5;
	int s = 2;
	int t = 3;
	Delete_all_range_value(L, s, t);
	for (int i = 0; i < L.length; i++)
	{
		printf("L.data[%d]=%d\n", i, L.data[i]);
	}
	printf("L.length=%d\n", L.length);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//-------------------------代码核心------------------------//
bool Delete_same(SqList& L)  //1 2 2 2 3 3 3 3 4 4 4 5 5 5 
{
	if(L.length==0)
		return false;
	int i = 0, j = 0;
	for (i = 0, j = 1; j < L.length; j++)
	{
		if (L.data[i] != L.data[j])
			L.data[++i] = L.data[j];
	}
	L.length = i + 1;
	return true;
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList L;
	//初始化顺序表
	L.length = 14;
	L.data[0] = 1;
	L.data[1] = 2;
	L.data[2] = 2;
	L.data[3] = 2;
	L.data[4] = 3;
	L.data[5] = 3;
	L.data[6] = 3;
	L.data[7] = 3;
	L.data[8] = 4;
	L.data[9] = 4;
	L.data[10] = 4;
	L.data[11] = 5;
	L.data[12] = 5;
	L.data[13] = 5;
	Delete_same(L);
	for (int i = 0; i < L.length; i++)
	{
		printf("L.data[%d]=%d\n", i, L.data[i]);
	}
	printf("L.length=%d\n", L.length);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//-------------------------代码核心------------------------//
bool merge(SqList A, SqList B, SqList &C)
{
	if (A.length + B.length > MaxSize)
		return false;
	int i = 0, j = 0, k = 0;
	while (i < A.length && j < B.length)
	{
		if (A.data[i] <= B.data[j])
			C.data[k++] = A.data[i++];
		else  //B.data[j] <= A.data[j]
			C.data[k++] = B.data[j++];
	}
	while (i < A.length)
		C.data[k++] = A.data[i++];
	while (j < B.length)
		C.data[k++] = B.data[j++];
	C.length = k;
	return true;
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList A;
	SqList B;
	SqList C;//合并后的顺序表
	//初始化顺序表
//-------------L1-------------//
	A.length = 3;
	A.data[0] = 5;
	A.data[1] = 6;
	A.data[2] = 7;
//-------------L2-------------//
	B.length = 4;
	B.data[0] = 1;
	B.data[1] = 2;
	B.data[2] = 3;
	B.data[3] = 4;
	merge(A, B, C);
	for (int i = 0; i < C.length; i++)
	{
		printf("L.data[%d]=%d\n", i, C.data[i]);
	}
	printf("L.length=%d\n", C.length);
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
	ElemType data[MaxSize];
	int length;
}SqList;
//-------------------------代码核心------------------------//
typedef int DataType;
bool Reverse(DataType A[], int left, int right, int arraysize)
{
	if (left >= right || right >= arraysize)
		return false;                     //0  1  2  3  4  5           //0  1  2  3  4  5  6
	int mid = (left + right) / 2;         //11 12 13 14 15 16  奇数    //21 22 23 24 25 26 27  偶数
	for (int i = 0; i <= mid - left; i++)
	{
		DataType temp = A[left + i];
		A[left + i] = A[right - i];
		A[right - i] = temp;
	}
}

void Exchange(DataType A[], int m, int n, int arraysize)
{
	Reverse(A, 0, m + n - 1, arraysize);
	Reverse(A, 0, n - 1, arraysize);
	Reverse(A, n, m + n - 1, arraysize);
}
//-------------------------代码核心------------------------//
int main(void)
{
	SqList A;
	SqList B;
	int arraysize = 50;
	int data[MaxSize] = { 0 };
	//初始化顺序表
//-------------L1-------------//
	A.length = 3;
	data[0] = A.data[0] = 5;
	data[1] = A.data[1] = 6;
	data[2] = A.data[2] = 7;
	//-------------L2-------------//
	B.length = 4;
	data[3] = B.data[0] = 1;
	data[4] = B.data[1] = 2;
	data[5] = B.data[2] = 3;
	data[6] = B.data[3] = 4;
	Exchange(data, A.length,B.length, arraysize);
	for (int i = 0; i < A.length + B.length; i++)
	{
		printf("data[%d]=%d\n", i,data[i]);
	}
	printf("L.length=%d\n", A.length + B.length);
	return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

雅思口语 23九月换题季最新考题答案

目录 Helping others 1.Do you usually help people around you? 2.How do you help people around you,such as neighbours,family and friends? 3.Do your parents teach you how to help others? 4.Did your parents help you a lot when you were young? 5.What …

mysql redo 日志 、 undo 日志 、binlog

事务四大特性 ACID 原子性 、一致性、隔离性、持久性 事务的隔离性由锁机制实现 事务的原子性、一致性、持久性由事务的redo 日志 和 undo 日志 保证 redo log 是存储引擎层&#xff08;innodb&#xff09;生成的日志&#xff0c;记录的是物理级别上的页修改操作&#xff0c;…

2.13 PE结构:实现PE代码段加密

代码加密功能的实现原理&#xff0c;首先通过创建一个新的.hack区段&#xff0c;并对该区段进行初始化&#xff0c;接着我们向此区段内写入一段具有动态解密功能的ShellCode汇编指令集&#xff0c;并将程序入口地址修正为ShellCode地址位置处&#xff0c;当解密功能被运行后则可…

js中如何实现字符串去重?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 Set 数据结构⭐ 使用循环遍历⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感…

Python自动化测试(1)-自动化测试及基本技术手段概述

生产力概述 在如今以google为首的互联网时代&#xff0c;软件的开发和生产模式都已经发生了变化&#xff0c; 在《参与感》一书提到&#xff1a;某位从微软出来的工程师很困惑&#xff0c;微软在google还有facebook这些公司发展的时候&#xff0c;为何为感觉没法有效还击&…

Android性能监测

1.使用adb top可以查看当前Android设备的CPU和内存&#xff08;mem&#xff09;使用情况 adb shell top打印的信息如下&#xff1a; PID 表示进程号 USER 表示进程所属用户组 PR 进程的优先级&#xff0c;值越小&#xff0c;优先级越高 NI 进程的nice值&#xff0c;决定了CPU…

SpringMVC实现文件上传和下载

目录 前言 一. SpringMVC文件上传 1. 配置多功能视图解析器 2. 前端代码中&#xff0c;将表单标记为多功能表单 3. 后端利用MultipartFile 接口&#xff0c;接收前端传递到后台的文件 4. 文件上传示例 1. 相关依赖&#xff1a; 2. 逆向生成对应的类 3. 后端代码&#xf…

python-turtle库

turtle库 turtle.done() - - - done函数让窗口进入消息循环&#xff0c;等待关闭 设置画布大小和位置 turtle.screensize(canvwidthNone, canvheightNone, bgNone) 画布的宽高背景颜色 turtle.setup(width0.5, height0.75, startxNone, startyNone) 宽高为整数时表示像素&…

leetcode第362场周赛

2848. 与车相交的点 核心思想&#xff1a;差分数组。统计覆盖区间&#xff0c;把nums中有的区间1&#xff0c;维护区间我们用差分数组&#xff0c;然后求出差分数组的前缀和即是我们维护的区间&#xff0c;判断区间有哪些值是大于0的即可。 2849. 判断能否在给定时间到达单元格…

新型温湿度传感器解决方案:满足多样化应用需求

在许多环境和应用场景中&#xff0c;温度和湿度的监控和管理都至关重要。例如&#xff0c;在农业大棚中&#xff0c;精确控制温湿度对于作物的生长影响巨大&#xff1b;在仓储物流中&#xff0c;保持适宜的温湿度可以延长物品的保存期限&#xff1b;在HVAC系统中&#xff0c;精…

QT子线程或自定义类操作访问主界面UI控件的几种方法

前言 QT创建窗体工程&#xff0c;一般在MainWindow或Dialog类里可以直接通过ui指针访问控件&#xff0c;但是添加新的类后又如何访问呢&#xff0c;可以通过以下几种方式&#xff1a; 将ui指针公开后直接访问 &#xff08;1&#xff09;例如有个自己定义的类CustomCl…

Rokid Jungle--Station pro

介绍和功能开发 YodaOS-Master操作系统&#xff1a;以交换计算为核心&#xff0c;实现单目SLAM空间交互&#xff0c;具有高精度、实时性和稳定性。发布UXR2.0SDK&#xff0c;为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…

代码随想录 -- day48 -- 198.打家劫舍、213.打家劫舍II 、337.打家劫舍III

198.打家劫舍 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 dp[i] max(dp[i - 2] nums[i], dp[i - 1]); class Solution { public:int rob(vector<int>& nums) {if (nums.size() 0) return 0;if…

十六、Webpack常见的插件和模式

一、认识插件Plugin Webpack的另一个核心是Plugin&#xff0c;官方有这样一段对Plugin的描述&#xff1a; While loaders are used to transform certain types of modules, plugins can be leveraged to perform a wider range of tasks like bundle optimization, asset m…

系统转换-系统维护-净室软件工程-基于构件

系统转换-系统维护-净室软件工程-基于构件 系统转换系统转换系统维护净室软件工程基于构建的软件工程 系统转换 改造 继承 集成 淘汰 系统转换 直接转换 并行转换 分段转换&#xff1a;子系统之间的并行转换 系统维护 重点 净室软件工程 预防大于检查 基于构建的软件工程 复用而…

win11无法加载文件,因为在此系统上禁止运行脚本

问题背景&#xff1a; 最近升级了windows11&#xff0c;文件右键打开终端&#xff0c;默认是使用的powershell。 后面安装npm包依赖的时候&#xff0c;遇到了无法加载文件&#xff0c;因为在此系统上禁止运行脚本。 提示中可以通过访问链接查看&#xff1a;https:\go.micros…

Java笔记040-反射/反射机制、Class类

目录 反射(reflection) 一个需求引出反射 反射机制 Java反射机制原理图 Java反射机制可以完成 反射相关的主要类 反射机制的优点和缺点 反射调用优化-关闭访问检查 Class类 基本介绍 代码解释部分 类加载方法 应用实例&#xff1a;Class02.java 获取Class类对象 …

【MFC】实现简单UDP通信

创建项目&#xff0c;初始化套接字 创建一个基于对话框的MFC项目&#xff08;名称为UDP&#xff09;&#xff0c;高级功能选中Windows套接字 这个时候在CUDP类的InitInstance()方法中就会出现这样的代码用来初始化套接字 if (!AfxSocketInit()) {AfxMessageBox(IDP_SOCKETS_…

APC注入进阶“Early Bird”

序 APC注入在前面的章节已经给大家讲过&#xff0c;基本原理也是老生常谈的内容了&#xff1a; APC注入可以让一个线程在它正常的执行路径运行之前执行一些其他的代码&#xff0c;每一个线程都有一个附加的APC队列&#xff0c;他们在线程处于可警告的时候才被处理&#xff1b;…

【JAVA-Day04】Java关键字和示例:深入了解常用关键字的用法

Java关键字和示例&#xff1a;深入了解常用关键字的用法 摘要Java 关键字、标识符和命名规范一、Java 关键字常用关键字DEMO1. 示例代码使用 if 和 else 关键字&#xff1a;2. 示例代码使用 for 循环&#xff1a;3. 示例代码使用 switch 关键字&#xff1a;4. 示例代码使用 wh…