随笔分类 -  数据结构

摘要:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 如下图。 10 /\ 6 14 /\ /\ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 这是一种二叉树的中序遍历。 typedef struct BSTreeNo 阅读全文
posted @ 2016-04-10 09:15 行藏在我 阅读(171) 评论(0) 推荐(0)
摘要:什么是二叉树? 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树。二叉树的子树有左右之分,并且次序不能任意颠倒。二叉树是递归定义的,所以一般二叉树的相关题目也都可以使用递归的思想来解决,当然也有一些可以使用非递归的思想解决,我 阅读全文
posted @ 2016-03-11 16:40 行藏在我 阅读(1034) 评论(0) 推荐(0)
摘要:链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个 阅读全文
posted @ 2016-02-23 16:32 行藏在我 阅读(321) 评论(0) 推荐(0)
摘要:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。 即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。 直接插入排序示例: 代码如下: void insertSort(int a 阅读全文
posted @ 2016-02-20 20:50 行藏在我 阅读(316) 评论(0) 推荐(0)
摘要:快速排序采用的思想是分治思想,是对要进行排序的数据分割成独立的两部分,其中一部分的数据要比另一部分的数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 代码如下: ///所有排序算法的基本结构体 typedef struct { int 阅读全文
posted @ 2016-02-12 12:03 行藏在我 阅读(208) 评论(0) 推荐(0)
摘要:typedef struct node * PNode;/*定义栈节点类型*/typedef struct node{ int data;//数据 PNode down;}Node;typedef struct stack{ PNode top; int size;}Stack;//创建一个... 阅读全文
posted @ 2015-09-29 14:32 行藏在我 阅读(210) 评论(0) 推荐(0)
摘要:2.反转二叉树左右子树BiTree invertTree(BiTree pRoot){ if (pRoot == NULL) { return NULL; } pRoot->lchild = invertTree(pRoot->lchild); pRoot->rchild = inve... 阅读全文
posted @ 2015-09-24 11:48 行藏在我 阅读(165) 评论(0) 推荐(0)
摘要:树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,... 阅读全文
posted @ 2015-09-24 11:36 行藏在我 阅读(235) 评论(0) 推荐(0)