二叉排序树
二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 若任意节点的左子树不...
交换排序
交换排序是一类借助“交换"进行排序的方法,其主要思想是:在待排序序列中选两个记录,将它们的关键码进行比较,如果反序则交换它们的位置。下面主要介绍交换排序中的冒泡排序和快速排序方法。冒泡排序(Bubble Sort):是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们...
插入排序
插入排序的主要思想是将一个待排序的一组数按照其关键码的大小插入到已经排好序的有序序列中,直到所有待排元素插入对应的序列中。下面给出维基百科上插入排序的定义:(https://zh.wikipedia.org/wiki/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F)插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建...
Josephus问题解决方法五(递归)
该问题的解决方法有很多种,关于Josephus问题,前面已经给出了4种解法(http://blog.itpub.net/29876893/viewspace-1853008/),是笔者对该问题产生浓厚的兴趣下而写出的,这些算法(可以说是很简单的吧,嘿嘿)是笔者走路或者吃饭的时候想出的(原创哦~_~),也许其中功能不是太完善或不当之处,请大家谅解。今天突然想起解决...
二分查找算法
关于二分法查找,也经常称折半查找,网上有很多资料,给出维基百科上的链接(https://zh.wikipedia.org/wiki/%E6%8A%98%E5%8D%8A%E6%90%9C%E7%B4%A2%E7%AE%97%E6%B3%95,http://www.codecodex.com/wiki/Binary_search),本文不作赘述。下面给出二分查找的非递归和递归的算法。点击(此处)折叠或打开...
Josephus问题解决方法四(循环数组)
前几篇都是运用了循环单链表的知识解决该问题(http://blog.itpub.net/29876893/viewspace-1815055/,http://blog.itpub.net/29876893/viewspace-1850077/,http://blog.itpub.net/29876893/viewspace-1851818/),下面用数组来解决该问题。运用的解题思路和第三篇类似,给元素设置标识,退出循环的条件就是被标识的元素总数=...
Josephus问题解决方法三(单向循环链表标识法)
前面解决Josephus问题时(http://blog.itpub.net/29876893/viewspace-1815055/,http://blog.itpub.net/29876893/viewspace-1850077/),都是找到该同学后,把该同学从环中除去,然后剩下的同学再组成一个新的环,终止条件是p != p->next。下面我们换种方式考虑该问题,可不可以找到该同学后,标识该同学,然后一直循环该环...
队列的链式存储结构
队列的顺序存储结构比链式较为复杂些,顺序存储结构要构造循环队;但是链式就不需要,存储元素的内存空间是随机的,用的时候再向os申请内存空间。链式存储结构中需要两个flag工作指针,过程相对较简单些。但是其中也有需要注意的细节。下面给出实现代码:点击(此处)折叠或打开#include
Josephus问题解决方法二
前面文章写了关于Josephus问题解决的一种方法http://blog.itpub.net/29876893/viewspace-1815055/,但是由于前面的程序有两处错误,本人写文章时太粗心!导致运行结果错误,下面修正:(原文已经修正,下面指出已对自己粗心的教训)点击(此处)折叠或打开... ......
二叉树的非递归遍历
前面一篇介绍了二叉树的递归遍历操作http://blog.itpub.net/29876893/viewspace-1841619/,下面介绍二叉树的非递归遍历操作。运用递归操作,很容易进行二叉树的遍历,结合上篇文章的介绍,在递归的时候都是找到当前结点,压入”栈“中,然后再通过当前结点找到左(右)孩子,递归函数每次返回时,当前结点都会出”栈“。在...
队列的顺序存储结构
队列的顺序存储结构相对于链式存储结构较为复杂,本文重点介绍队列顺序结构。下面简单的谈两个问题:1.由于是顺序队列,很容易想到用数组来存储元素,假如一个队列的长度是10,就是一下可以放入10个元素,当9个元素出队后,又放入3个元素,此时是不是要再增长数组的长度呢?实际中不可能增加数组的长度而任内存空间的浪费...
数据结构之二叉树递归操作
二叉树(binary tree)是n(n>=0)个结点的有限结合,该集合或者为空集(空二叉树),或由一个根结点和两棵互不相交的,分别称为根结点的左子树(left subtree)和右子树(right subtree)的二叉树组成。二叉树的特点:1.每个结点最多有两棵字树,所以二叉树中不存在度大于2的结点2.二叉树是有序的,其次序不能任意颠倒,即...
Josephus问题解决方法一
关于该问题简单描述:假设有n个人排成一个圈。从第一个人开始报数,数到第m个人的时候这个人从队列里出列。然后继续在环里数后面...
栈链式结构简单操作
关于栈的链式存储结构,下面用的是单链表头插法创建栈,因为头插法的特点是在头结点(frist)与NULL空结点(first ->next)之间插入各结点,存储数据的入栈顺序和出栈顺序是相反的,和栈的<br />特点很相似,工作指针如top指针一样,始终指向栈顶(第一个结点)。下代码如有不当之处,请指正!<br /><div><div class=...
顺序栈的简单操作
关于顺序栈的简单操作如下, 由于主要介绍思想实现,读者从代码中可以很容易看出很多漏洞。如有错误之处,请大家指正!点击(此处)折叠或打开
循环双链表的简单操作
<span style="font-size:14px;">下面是循环双链表的简单操作,其中很多细节没有考虑到,比如没有判断</span><span style="font-size:14px;">空链表,目的提供</span><span style="font-size:14px;">思想,如有出现错误,请大家指正!</span><br /><div><div class="codeheads"><p>点击(<span style="cursor:point...
单链表链式结构的创建
<span style="font-family:Consolas, monospace;letter-spacing:0.1px;line-height:15.6px;white-space:normal;font-size:14px;background-color:#FFFFFF;">翻看之前的书本,总结一下数据结构方面的小知识点。关于单链表的顺序结构就不说了,比较简单。</span><span style="font-size:14px;"></span><br /><div><div cla...
单链表简单操作一
下面简单的进行单链表的插入删除销毁等操作,想重点的说一下,关于链表插入的时候,分为三种情况,不过原理都一样。在尾插的时候,我们没有遍历链表,不清楚链表的长...
循环双链表的创建初始化
<div><span style="color:#666666;font-family:宋体, Arial;line-height:26px;white-space:normal;font-size:16px;background-color:#FFFFFF;"><span style="font-family:Consolas, monospace;letter-spacing:0.1px;line-height:15.6px;white-space:normal;background-color:#FFFFFF;">前面对单链表进行了简单的操作,下...