数据结构与算法
雷77
有志者事竟成
展开
-
数据结构与算法-概述
一、数据结构的概述1.数据结构的逻辑结构是指数据元素之间的相互关系,是我们想象出来的,并没有实质性的将其存储在计算机中1)集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系2)线性结构:线性结构中的数据元素之间是一对一的关系3)树形结构:树形结构中的数据元素之间存在一对多的层次关系4)图形结构:图形结构的数据元素是多对多的关系2.数据结构的物理结构是指数据的逻...原创 2019-09-09 23:39:11 · 305 阅读 · 0 评论 -
数据结构与算法-栈和队列
一、栈(先进后出)栈的顺序存储结构栈的定义:栈是限定在表尾进行插入和删除操作的线性表允许插入和删除的一端称为栈顶,另一端称为栈底。双端栈的定义: 双端栈是指将一个线性表的两端当作栈底分别进行入栈和出栈的操作。1.Stack 栈接口定义/** * Stack是栈的接口 * @author ABC * */public interface Stack<E> { /*...原创 2019-09-10 15:37:10 · 402 阅读 · 0 评论 -
数据结构与算法——单链表
我们知道线性表的顺序存储结构,最大的缺点就是插入和删除时需要移动大量的元素,这样显然很消耗时间。我们可以想一想,怎么样可以不用移动元素而进行删除和插入呢?为了解决这个问题,我们提出了链式存储结构,它是用一组任意的存储单元去存储线性表的数据元素,这组存储单元可以连续,也可以不连续,也就是说这些数据元素可以在内存中未被占用任意位置,这样也节省了大量的空间。如图所示。链式存储结构1.结点...原创 2019-09-16 21:56:59 · 326 阅读 · 0 评论 -
经典算法(Java)
约瑟夫环问题问题描述:N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号)解析:根据题目要求,假设我们现在20个人,数到3的人出圈,可以看出这是一个单向循环链表。我们可以先来看看有什么规律,如图所示,我们可以设置一个临时结点p,让p指向出圈元素的前驱。从1数到3的时候,p就得前进一步指...原创 2019-09-18 21:39:55 · 505 阅读 · 0 评论 -
数据结构与算法——单向循环链表
简单来说,单向循环链表就是让单链表尾结点的指针域由null改为指向头结点,形成一个首尾相连的环形链表。就像衔尾蛇一样。而单链表与单向循环链表的主要差异就在于循环的判断条件上,单链表判断的是p->next是否为空,而单向循环链表判断的是p->next是否等于头结点,如果等于,则循环结束。注意:单链表我们用的是虚拟头结点,而单向循环链表head指向的则是真实的头结点。1.单...原创 2019-09-17 09:22:56 · 762 阅读 · 0 评论