代码汇总【数据结构与算法】【精致版】

代码汇总【数据结构与算法】【精致版】

学习

第一章 引言

第二章 线性表

顺序表

1-顺序表.h
1-顺序表的测试.c

//1.顺序表的初始化
//【算法2-1】 顺序表的初始化
//创建顺序表函数 初始化前n个数据
//2.顺序表的插入 
//【算法2-2】顺序表的插入 
//3.顺序表的删除
//【算法2-3】 顺序表的删除
//4.顺序表中的按值查找 
//【算法2-4】顺序表中的按值查找 
//5.另外
//按序号查询 ,结果返回由x实现 

[例 2-1] 两个顺序表合并
2-5顺序表的合并.c

// [例 2-1] 两个顺序表合并 
//【算法2-5】两个顺序表的合并 

单链表

2-单链表.h
2-单链表的测试.c

//1.建立单链表
//【算法2-6】头插法建立单链表 
//【算法2-7】尾插法建立单链表 
//2.求表长
//【算法2-8】 求单链表的表长
//3.查找操作 
//(1) 按序号查找  Get(H,k)
//【算法2-9】单链中按序号查找 
//(2) 按值x查找 
//【算法2-10】单链中按值查找 
//4.插入操作 
//【算法2-11】单链表的插入 
//在单链表H的第i个位置上插入值为x的元素 
//5.删除操作 
//【算法2-12】  单链表的删除 

[例2-2]单链表的逆置
2-13单链表的逆置.c

// [例2-2]单链表的逆置
//【算法2-13】 单链表的逆置

[例2-3]单链表中删除重复结点
2-14单链表中删除重复结点.c

// [例2-3]单链表中删除重复结点
//【算法2-14】单链表中删除重复结点

[例2-4]两个集合的差集
2-15两个集合的差集.c

//  [例2-4]两个集合的差集
// 【算法2-15】两个集合的差集

[例] 两个单链表的合并
两个单链表的合并.c

循环链表

3-循环链表.c

双向链表

4-双向链表.c

静态链表

5-静态链表.c

第三章 栈和队列

顺序栈

1-顺序栈.h
1-顺序栈测试.c

共享栈

2-共享栈.c

链栈

3-链栈.h
3-链栈.c

多个链栈

4-多个链栈.c

5-括号匹配.c

循环队列

6-循环队列.c

链队列

7-链队列.c

第四章 串

定长顺序串

1-定长顺序串.c

//(1)串插入函数 
//【算法4-2】串插入函数 
//(2)串删除函数
//【算法4-3】 串删除函数
//(3)串连接函数
//【算法4-4】 串连接函数
//(4)求子串函数
//【算法4-5】 求子串函数 

堆串

2-堆串.c

//(1)串初始化函数
//【算法4-6】串初始化函数
//(2)串赋值函数
//【算法4-7】串赋值函数
//(3)串插入函数 
//【算法4-8】 串插入函数 
//(4)串删除函数
//【算法4-9】 串删除函数
//(5)串连接函数
//【算法4-10】 串连接函数
//(6)求子串函数
//【算法4-11】求子串函数

4-12BF模式匹配算法.c

//【算法4-12】BF模式匹配算法

4-13KMP模式匹配算法

//【算法4-13】KMP模式匹配算法
//【算法4-14】next算法
//【算法4-15】 nextval算法

块链串

3-块链串.c

第五章 多维数组和广义表

第六章 树

二叉树

1-二叉树的递归实现.c

//【算法6-1】递归 先序
//【算法6-2】递归 中序
//【算法6-3】递归 后序 

2-二叉树的非递归实现.c

//【算法6-4】非递归 先序
//【算法6-5】非递归 中序-1
//【算法6-6】非递归 中序-2
//【算法6-7】非递归 后序
//【算法6-8】二叉树的层次遍历 

3-二叉树的遍历算法应用.c

// 【算法6-9】先序遍历统计二叉树的结点数
// 【算法6-10】中序遍历输出二叉树的叶子结点
// 【算法6-11】后序遍历输出二叉树的叶子结点数目 
//【算法6-12】全局变量法求二叉树的高度
//【算法6-13】求二叉树的高度
//【算法6-14】求二叉树中某一结点的双亲 
//【算法6-15】二叉树相似性判定 
//【算法6-16】按树状打印二叉树 

第七章 图

1-邻接矩阵.c

//【算法7.1】用邻接矩阵创建无向网

2-邻接矩阵plus.c

3-邻接表.c
4-邻接表plus.c

5-DFSAdjMatrix.c
6-DFSAdjList.c

//【算法 7-2】递归深度优先搜索遍历连通子图
//【算法 7-3】深度优先遍历图g 
//【算法 7-4】非递归深度优先搜索遍历连通子图

7-BFSAdjMatrix.c
8-BFSAdjList.c

//【算法7-5】广度优先搜索遍历连通子图
//【算法7-6】广度优先遍历图g 

9-Prim.c

//【算法7-7】Prim算法求得最小生成树 

10-拓扑排序.c

//【算法7-8】获取图中每个顶点入度值 
//【算法7-9】 拓扑排序

11-单源最短路径.c

//【算法7-11】采用Dijkstra算法求得从源点到其余各顶点的最短路径

12-多源最短路径.c

//【算法7-12】Floyd算法求得任意两顶点之间的最短路径

第八章 查找

1-顺序查找.c

//【算法8-1】顺序查找
//【算法8-2】加“监视哨”的顺序查找

2-折半查找.c

//【算法 8-3】折半查找的非递归实现

3-二叉排序树.c

//【算法8-4】基于二叉排序树查找的非递归实现
//【算法8-5】 基于二叉排序树查找的递归实现
//【算法8-6】二叉排序树的插入
//【算法8-7】  二叉排序树的建立
//【算法8-8】 二叉排序树的删除

4-哈希表查找.c

// 【算法8-10】采用除留余数法构造哈希函数
//【算法8-11】采用线性探测再散列处理冲突
//【算法8-12】哈希表的查找
//【算法8-13】  哈希表的插入
//【算法8-14】哈希表的创建
//【算法8-15】  哈希表的删除

第九章 排序

插入类排序

1-直接插入排序.c

// 【算法9-1】直接插入排序
// 【算法9-2】改进的直接插入排序

2-折半插入排序.c

//【算法9-3】折半插入排序

3-希尔排序.c

//【算法9-4】希尔排序

交换类排序

4-冒泡排序.c

//【算法9-5】冒泡排序
//【算法9-6】改进冒泡排序

5-快速排序.c

//【算法9-7】一趟快速排序 
//【算法9-8】快速排序 

选择类排序

6-简单选择排序.c

//【算法9-9】简单选择排序

7-堆排序.c

//【算法9-10】堆的筛选
//【算法9-11】建立初始堆
//【算法9-12】堆排序

归并类排序

8- 二路归并排序.c

//【算法9-13】二路归并排序
//【算法9-14】二路归并排序

9-自然归并排序.c

//【算法9-15】自然归并排序

分配类排序

10-多关键字排序.c

11-链式基数排序.c

//【算法9-16】基于链队列的基数排序
//【算法9-17】提取关键字中第m位的数字值

习题

第一章 习题

9.1 在数组A[1…n]中查找值为K的元素,若找到则输出其位置i(1<=i<=n),否则输出0作为标志
9.2 找出数组A[1…n]中元素的最大值和次最大值

第二章 习题

(1) 设有一线性表e=(e1,e2,…,e[n-1],en,其逆线性表定义为e’=(en,e[n-1],…,e2,e1)。请设计一个算法,将线性逆置,要求逆线性表仍占用原线性表的空间,并且用顺序表和单链表两种方法来表示,写出不同的处理函数。

(3) 已知线性表A的长度为n,并且采用顺序存储结构。请编写算法,删除线性表中所有值为x的元素。

(5) 假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某结点的指针,试编写算法,在链表中删除指针s所指结点的前驱结点。
(8)设指针la和lb分别指向两个无头结点单链表中的首元结点,试设计算法,从表la中删除自第i个元素起共len个元素,并将它们插入表lb的第j个元素之后。

(9)设带头结点的线性单链表A=(a1,a2,…,am),B=(b1,b2,…bn)。试编写算法按下列规则合并A、B为线性单链表C,使得
   C=(a1,b1,…,am,bm,b_(m+1),…,bn),m<=n
或者
   C=(b1,a1,…,bn,an,a_(n+1),…,am),m>n

第三章 习题

(2) 回文是指正读反读均相同的字符序列,如“abba”和“abdba"均是回文,但“good"不是回文。试写一个算法判定给定的字符串是否为回文。

(6) 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点,试编写相应的置空队、判队空、入队和出队算法。

(8) 在循环队列中,可以设置一个标志域tag,以区分当尾指针和头指针相等时,队列状态是“空”还是“满”(tag的值为0表示“空”,tag的值为1表示“满”),编写此结构相应的队列初始化、入队、出队算法。

第六章 习题

(1)编写算法,在以二叉链表存储的二叉树中,求度为2的结点的个数。

(2)编写算法,在以二叉链表存储的二叉树中,交换二叉树各结点的左右子树。

实验

约瑟夫环

约瑟夫环.c

//【算法2-16】约瑟夫环

一元多项式运算器

多项式.c

//【算法2-17】建立多项式
//【算法2-18】输出多项式
//【算法2-19】两个多项式相加
//【算法2-20】两个多项式相减

迷宫求解

马踏棋盘

计算器

哈夫曼编码的实现

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

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

相关文章

iSlide2024一款基于PPT的插件工具包含38个设计辅助功能

根据使用者情况表明iSlide 是一款拥有30W素材的PPT高效设计软件&#xff0c;可提高90%工作效率&#xff0c;现全球已有超过1400万使用者&#xff0c;智能排版原创高品模板可商用图形&#xff0c;真正摆脱PPT的束缚&#xff0c;把精力用在该用的地方。我们都明白islide插件功能特…

vue项目中页面遇到404报错

vue页面访问正常&#xff0c;但是一刷新就会404的问题解决办法&#xff1a; 1.解决方法&#xff1a; 将vue的路由模式 mode: history 修改为 mode: hash模式 //router.js文件 const router new Router({//mode: history, mode: hash,routes: [{ path: /, redirect: /login …

nodejs 操作rabbitMQ rascal库(针对amqplib的封装)

Rascal 是一个围绕amqplib 的丰富的 pub/sub 包装器。amqplib 最好的事情之一是它不会对您如何使用它做出假设。另一个是它不尝试抽象AMQP Concepts。因此&#xff0c;该库提供了大量的控制和灵活性&#xff0c;但您有责任采用适当的模式和配置。您需要注意的是&#xff1a; 默…

基于Python OpenCV的金铲铲自动进游戏、D牌...

基于Python OpenCV的金铲铲自动进游戏、D牌... 1. 自动点击进入游戏1.1 环境准备1.2 功能实现2. 自动D牌3. 游戏结束自动退1. 自动点击进入游戏 PS: 本测试只用于交流学习OpenCV的相关知识,不能用于商业用途,后果自负。 1.1 环境准备 需要金铲铲在win10的模拟器,我们这里选…

Vue 3 中,watch 和 watchEffect 的区别

结论先行&#xff1a; watch&#xff1a;需要指明要监听的数据&#xff0c;而且在回调函数中可以获取到属性变化的前后值&#xff1b; 适用于需要精确控制监视范围的情况&#xff1b;也就是需要针对特定数据变化执行操作。 watchEffect&#xff1a;不用指明监听哪个属性&…

python单元测试框架(继承、unittest参数化、断言、测试报告)

一、继承 继承能解决什么问题&#xff1f; unittest每个模块都要用到前提条件以及清理&#xff0c;如果有上百个模块&#xff0c;我们要改域名和浏览器&#xff0c;就会工作量很大特别麻烦&#xff0c;这时我们可以用继承的思想只用改一次 我们可以将前提和清理提出来单独放…

新登录接口独立版变现宝升级版知识付费小程序-多领域素材资源知识变现营销系统

源码简介&#xff1a; 资源入口 点击进入 源码亲测无bug&#xff0c;含前后端源码&#xff0c;非线传&#xff0c;修复最新登录接口 梦想贩卖机升级版&#xff0c;变现宝吸取了资源变现类产品的很多优点&#xff0c;摒弃了那些无关紧要的东西&#xff0c;使本产品在运营和变现…

MVC、MVP、MVVM区别

MVC、MVP、MVVM区别 MVC&#xff08;Model-View-Controller&#xff09; 。是一种设计模式&#xff0c;通常用于组织与应用程序的数据流。它通常包括三个组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&…

TDengine 上榜 BenchCouncil 全球首个开源贡献榜

近日&#xff0c;Bench Council&#xff08;国际测试委员会&#xff09;公布了“世界首个开源贡献榜”&#xff0c;该榜单号称“只以贡献分高下”。值得一提的是&#xff0c;涛思数据、TDengine 上榜 BenchCouncil 发布的开源计算机系统机构榜、成果榜&#xff0c;TDengine 创始…

SQL语句性能优化

1、查询 SQL 尽量不要使用 select *,而是 select 具体字段 反例子: select * from sys_user; 正例子: select id,name from sys_user; 理由如下: 只取需要的字段,节省资源、减少网络开销。select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。…

CDN策略好坏的重要性

CDN加速技术在今天的互联网世界中扮演着至关重要的角色&#xff0c;它可以显著提高网站和应用程序的性能&#xff0c;同时也有助于提供更好的安全性。然而&#xff0c;设定安全策略的好坏对CDN的影响是一个关键的议题&#xff0c;本文将深入探讨这个问题。 CDN&#xff08;内容…

pdfH5实现pdf预览功能

1.引入 npm install pdfh5 2.使用 <view id"pdfBox" class""></view> showPdf(url) {this.pdfh5 new Pdfh5("", {URIenable: false,zoomEnanle: true,maxZoom: 2,pdfurl: url})this.pdfh5.on("complete", function(st…

2、Sentinel基本应用限流规则(2)

2.2.1 是什么 Sentinel 是阿里中间件团队开源的&#xff0c;面向分布式服务架构的轻量级高可用流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 2.2.2 基本概念 • 资源 (需要被保护的东西…

ASP.net C# 用Aspose.pdf实现pdf合并

直接上代码&#xff0c;供参考&#xff0c;备忘&#xff01; using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Xml; using System…

盘点 MySQL 创建内部临时表的所有场景

作者总结了 MySQL 中所有触发使用内部临时表的场景。 作者&#xff1a;刘嘉浩&#xff0c;爱可生团队 DBA 成员&#xff0c;重度竞技游戏爱好者。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本文约 2000 字&#xff…

宝马——使用人工智能制造和驾驶汽车

德国汽车制造商宝马(BMW)每年在全球制造和销售250万台汽车&#xff0c;其品牌包括宝马、MINI和劳斯莱斯。 宝马汽车以其卓越的性能和对新技术的应用而著名&#xff0c;它是道路上最精致的汽车之一&#xff0c;并且和其竞争对手戴姆勒(Daimler)一样&#xff0c;在将自动驾驶汽车…

Redis中的Zset类型

目录 Zset的相关命令 zadd zrange zcard zcount zrevrange zrangebyscore zpopmax bzpopmax zpopmin和bzpopmin zrank zrevrank zscore zrem zremrangebyrank zremrangebyscore 操作集合间的命令 zinterstore和zunionstore 内部编码 Zset的应用场景 Zset表…

独立键盘接口设计(Keil+Proteus)

前言 软件的操作参考这篇博客。 LED数码管的静态显示与动态显示&#xff08;KeilProteus&#xff09;-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/134101256?spm1001.2014.3001.5501实验&#xff1a;用4个独立按键控制8个LED指示灯。 按下k1键&#x…

数字化转型需要RPA,那么RPA如何落地?

首先&#xff0c;我们来探讨一下RPA为什么这么重要&#xff0c;并非一个简单的自动化脚本就可以代替的。 主要从高效性、准确性、稳定性三方面体现RPA流程自动化的价值。 一、高效性 相比人类员工&#xff0c;机器人可以以飞快的速度完成工作&#xff0c;而且不需要休息或中…

Mysql进阶-视图篇

介绍 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存查询结果。…