#数据结构与算法

吴裕雄--天生自然数据结构:循环链表(约瑟夫环)的建立

无论是静态链表还是动态链表,有时在解决具体问题时,需要我们对其结构进行稍微地调整。比如,可以把链表的两头连接,使其成为了一个环状链表,通常称为循环链表。只需要将表中最后一个结点的指针指向头结点,链表就能成环儿需要注意的是,虽然循环链表成环状,但本质上还是链表,因此在循环链表中,依然能够找到头指针和首元节点等。循环链表和...

吴裕雄--天生自然数据结构:双向链表基本操作

根据数据添加到双向链表中的位置不同,可细分为以下3种情况:添加至表头将新数据元素添加到表头,只需要将该元素与表头元素建立双层逻辑关系即可。换句话说,假设新元素节点为temp,表头节点为head,则需要做以下2步操作即可:temp->next=head;head->prior=temp;将head移至temp...

吴裕雄--天生自然数据结构:双向链表及创建

无论是动态链表还是静态链表,表中各节点中都只包含一个指针(游标),且都统一指向直接后继节点,通常称这类链表为单向链表(或单链表)。虽然使用单链表能100%解决逻辑关系为"一对一"数据的存储问题,但在解决某些特殊问题时,单链表并不是效率最优的存储结构。比如说,如果算法中需要大量地找某指定结点的前趋结点,使用单链表无疑是灾...

吴裕雄--天生自然数据结构:静态链表基本操作

静态链表添加元素从备用链表中摘除一个节点,用于存储元素4;找到表中第2个节点(添加位置的前一个节点,这里是数据元素2),将元素2的游标赋值给新元素4;将元素4所在数组中的下标赋值给元素2的游标;//向链表中插入数据,body表示链表的头结点在数组中的位置,add表示插入元素的位置,a表示要插入的数据voidinsert...

吴裕雄--天生自然数据结构:静态链表及其创建

静态链表,也是线性存储结构的一种,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使用静态链表存储数据,数据全部存储在数组中(和顺序表一样),但存储位置是随机的,数据之间"一对一"的逻辑关系通过一个整形变量(称为"游标",和指针功能类似)维持(和链表类似)。创建一个足够大的数组,假设大小为6接着,在将...

吴裕雄--天生自然数据结构:单链表的基本操作

创建链表的代码如下所示://声明节点结构typedefstructLink{intelem;//存储整形元素structLink*next;//指向直接后继元素的指针}link;//创建链表的函数link*initLink(){link*p=(link*)malloc(sizeof(link));//创建一个头结点li...

吴裕雄--天生自然数据结构:单链表,链式存储结构

链表,别名链式存储结构或单链表,用于存储逻辑关系为"一对一"的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。数据元素随机存储,并通过指针表示数据之间逻辑关系的存储结构就是链式存储结构。链表中每个数据的存储都由以下两部分组成:数据元素本身,其所在的区域称为数据...

吴裕雄--天生自然数据结构:顺序表的基本操作

顺序表插入元素向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下3种情况:插入到顺序表的表头;在表的中间位置插入元素;尾随顺序表中已有元素,作为顺序表中的最后一个元素;虽然数据元素插入顺序表中的位置有所不同,但是都使用的是同一种方式去解决,即:通过遍历,找到数据元素要插入的位置,然后做如下两步工作:将要插入位置...

吴裕雄--天生自然数据结构:线性表(线性存储结构)

线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。如图  将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)。...

吴裕雄--天生自然数据结构:算法时间复杂度和空间复杂度

算法,即解决问题的方法。同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的。就比如要拧一个螺母,使用扳手还是钳子是有区别的,虽然使用钳子也能拧螺母,但是没有扳手好用。很多人误以为程序就是算法,其实不然:算法是解决某个问题的想法、思路;而程序是在心中有算法的前提下编写出来的可以运行的代码。例如,...

吴裕雄--天生自然数据结构:常用数据结构

数据结构是学习数据存储方式的一门学科数据结构大致包含以下几种存储结构:线性表,还可细分为顺序表、链表、栈和队列;树结构,包括普通树,二叉树,线索二叉树等;图存储结构;线性表线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有一个小朋友和他拉手,具备这种“一对一”...

吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验

    实验设备与软件环境硬件环境:内存ddr34G及以上的x86架构主机一部系统环境:windows软件环境:Anaconda2(64位),python3.5,jupyter内核版本:window10.0实验内容和原理(1)实验内容:使用k近邻算法改进约会网站的配对效果。海伦使...

吴裕雄--天生自然HADOOP操作实验学习笔记:协同过滤算法

实验目的初步认识推荐系统学会用mapreduce实现复杂的算法学会系统过滤算法的基本步骤实验原理  前面我们说过了qq的好友推荐,其实推荐算法是所有机器学习算法中最重要、最基础、最复杂的算法,一个推荐系统的架构,需要综合考虑离线计算、实时计算。需要用到的技术可能还有Flume、Kafka、Redis、Storm、Spa...

吴裕雄--天生自然HADOOP操作实验学习笔记:pagerank算法

实验目的了解PageRank算法学会用mapreduce解决实际的复杂计算问题实验原理1.pagerank算法简介  PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。  pagerank是Google排名运算法则(排名公式)的一部分,pagerank是Google用于用来标识网页的等级/重要...
首页上一页...7980818283...下一页尾页