深度学习
前记:这一章课件里主要讲了数组和广义表的属性和一些常用的操作。下面针对稀疏矩阵的基本操作做一个具体的实现,大家在运用中可以参考。题目描述:实现一个能进行稀疏矩阵基本运算的运算器,包括相加、相减、相乘。include<time.h>/*用于下面的srand((unsigned)time(NULL));函数的头文件*/#include<stdio.h>#include<stdlib.h>#define MAX_ARRAY_DIM 2#define MAXSIZE 100typedef struct{int aa[MAX_ARRAY_DIM];int dim;
串的基本操作前记:这一章课件里主要讲了串的属性和一些常用的操作。课件里面是通过伪代码的方式来进行描述,这样有利于同学们的理解,以及能够适用于各种编程语言。下面就针对C++语言对这些基本操作做一个具体的实现,大家在运用中可以参考。mystring.h:#ifndef MYSTRING_H#define MYSTRING_H#include <stdio.h>#include <stdlib.h>#include <windows.h>#define MAXSIZE 1000#define SIZEINCREASE 10#define 
汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。汉诺塔的大概起源就是这样,众僧们耗尽毕生精力也不可能完成金片的移动,因为通过计算,发现移动圆片的次数为18446744073709551615,这基本上是一个不可能完成的任务。汉诺塔规则:后来,这个传说就演变为下面的规则:1.有三根杆子A,B,C。A杆上有若干碟子2.每次移动一块碟子,小的只能叠在大的上面3.把所有碟子从A杆全部移到C杆上经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一
约瑟夫问题是数据结构和算法领域的一个非常出名的问题,它主要是线性表的操作问题,我们通过本章学习的顺序或者链式线性表就可以很好的解决问题。下面是对这个问题的介绍和解决方法,大家可以了解一下,学习顺序表、链表的一些方法。Josephu问题描述:编号为1,2,…,n的n个人顺时针围成一圈,每个人除有编号外,还持有密码,且已给定初始密码m,约定从编号为k(1≤k≤n)的人从1开始报数,数到m的那个人出列,取出它的密码作为新的密码m,它的下一位又从1开始报数,数到m的那个人出列,依此类推,直到所有人出列为止,试输出出队者的编号序列。提示:用一个不带头结点的循环链表来处理Josephu问题,先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,记到m时,对应结点丛链表中删除,然后被删除
什么是数据结构,为什么要学习数据结构?数据结构是否是一门纯数学课程?它在专业课程体系中起什么样的作用?我们要怎么才能学好数据结构?…相信同学们在刚开始《数据结构》这门课的学习时,心里有着类似前面几个问题的这样那样的疑问。希望下面的内容能帮助大家消除疑惑,下定决心坚持学好这门课:1学习数据数据结构的意义数据结构是计算机科学与技术专业、计算机信息管理与应用专业,电子商务等专业的基础课,是十分重要的核心课程。所有的计算机系统软件和应用软件都要用到各种类型的数据结构。因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付当前众多复杂的课题。要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。打好“数据结构”这门课程的扎实基础,对于学习计算机
1、静态查找表相关概念数据对象:同类元素集,具可识别比较的关键字存储结构:查找表采用顺序,记录按逻辑顺序存放查找方法:逐个比较表中的各个记录的关键字2、顺序表等几率查找的算法思想和性能分析。对数据元素按顺序存储结构存储的查找。算法思想: 算法:设哨兵,保证可以停下来,提高效率。此算法最简单直观,但显示出查找最基本的要做的事。原始算法: 静态查找——查找表的内容不变动态查找——查找表的内容受插入,删除的影响。性能分析(同类好坏评比用数据论说)时间/空间r[0..n],i=n+2时间复杂性:时间主要耗于何处?看算法主要工作量干了些什么?平均查找长度ASL查找成功时的=(n+1)/2查找不成功时的=n+1查找算法平均查找长度=(n+1)*3/4平均查找长度ASL查找所需要比
1、图的相关术语介绍。1)完全图(稀疏图/刷密图)稠密图:接近完全图,称为稠密图;稀疏图:称边数很少的图为稀疏图。2)顶点、边、弧、弧头、弧尾图中数据元素VI称为项点(vertexl;P(vi,vj)表示在项点vi和顶点vj之间有一条直接连线。如果是在无向图中,则称这条连线为边;如果是在有向图中,一般称这条连线为弧。边用顶点的无序偶对(vi,vj)来表示,称顶点vi和顶点vj互为邻接点,边(vi,vj)依附于项点vi与顶点vj;弧用顶点的有序偶对(vi,vj)来表示,有序偶对的第1个结点vi被称为始点(或弧尾),在图中就是不带箭头的一端;有序偶对的第2个结点Vj称为终点或弧头),在图中鹉是带箭头的一端。3)顶点的度、入度、出度:顶点的度(degree)是指依附于某项点V的边数,通常记为TD
1、树的表示方法有哪几种?树的表示方法有以下四种,各用于不同的目的1)直观表示法以倒着的分支树的形式表示。是数据结构中最常用的树的描述方法。其特点就是对树的逻辑结构的描述非常直观。2)嵌套集合表示法将根结点视为一个集合,其子树构成集合中若干个互不相交的子集,如此嵌套下去,即构成一棵树的嵌套集合表示。3)凹入表示法 主要用于树的屏幕和打印输出。4)广义表表示法 将根作为由子树森林组成的表的名字写在表的左边,这样依次将树表示出米。2、树的基本操作InitTree(&T)初始化一棵空树T。DestroyTree(&T)树T存在,现销毁树T。CreateTree(&T,definition)按definiti给出树T的定义构造树T。
1、什么是数组,有哪些基本操作?1)数组=(数据,顺序)。数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。2)基本操作4个(1) InitArray(&A,n,bound1,…,boundn)建A 若维数n和各维长度合法,则构造相应的数组A,并返回OK(2) DestroyArray(&A)删A 销毁数组A(3) Value(A,&e,index1,…,indexn)取a
1、串的ADT定义及基本操作ADTString{数据对象D={aiIai∈字符集,i=1,2,...,n,n≥0)数据关系R={<ai.1,ai>Iai.1,ai∈D,i=2,...,n)基本操作13个P71}ADTString 基本操作13个串赋值 StrAssign(&T,chars)串复制 StrCopy(&T,S)判空串 StrEmpty (S)串比较 StrCompare (S,T)求串长 StrLength (S)串清空 ClearString (&S)串联结