数据结构
Alfred young
大四计算机科学与技术学生,喜欢研究操作系统,分布式系统,云计算相关领域。
展开
-
各类排序的时间复杂度研究(附源码)
上学期的数据结构课程学习了包括直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,树型选择排序,堆排序,归并排序等排序方法,先对其复杂度进行研究并用C语言实现算法。插入类排序直接插入排序算法思想将第i个元素插入到前面i-1个已排好序的记录中。具体过程将第i个元素分别与前面i-1个元素依次比较,直到找到第一个小于或等于第i个元素将该元素插入找到元素之后,如果没有就插入到第一个位置。源码void InsertSort(int a[], int length){ f.原创 2020-08-19 22:53:51 · 265 阅读 · 0 评论 -
NOJ-构造哈希表
预备知识基于线性表和基于树的查找方法中,记录在列表中的位置是随机的,与记录的关键字没有直接关系。查找的效率依赖于查找过程中所进行的比较次数。哈希方法基本思想:创建哈希表时,把关键字k的元素直接存入地址为H(k)的单元,H称为哈希函数,以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=H(k),从而达到按关键字直接存取元素的目的。处理冲突本题用到的是最简单的线性探测再散列来处理冲突。基本思路:当发生冲突(目标位置已经有元素,但不是要查找的元素)时,每次增量取1。代码#inc.原创 2020-06-08 20:43:56 · 959 阅读 · 0 评论 -
NOJ-建立二叉树的二叉链表
NOJ-建立二叉树的二叉链表实则为二叉树的重建题目分析输入:一颗二叉树的前序序列和中序序列输出:一颗二叉树的后序序列。解题思路典型的二叉树的重建,如何去重建呢?二叉树的遍历特点前序遍历,即是访问根结点先序遍历左子树先序遍历右子树中序遍历中序遍历左子树访问根结点中序遍历右子树所以,我们很容易发现在前序序列中找到的第一个结点就是整棵树的根结点,而我们要在中序序列找到这个结点就必须遍历完整个左子树。即:前序序列中找到的根结点,在去中序序列中找到这个结点时中原创 2020-05-13 21:35:24 · 1661 阅读 · 0 评论 -
NOJ-建立二叉树的二叉链表存储结构
建立二叉树的二叉链表存储结构二叉树的链式存储表示typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild;//左右孩子指针} BiTNode, *BiTree;二叉树的结点由一个数据元素和分别指向其左右子树的两个指针域组成。有时为了便于找到结点的双亲,则可以在结点结构中增加一个指向其双亲的指...原创 2020-05-01 14:59:56 · 3118 阅读 · 0 评论 -
NOJ-求广义表的深度(C语言描述)
NOJ-求广义表的深度第一次写博客,希望能够记录下自己的心得体会,如有错误, 欢迎指正。广义表的基本概念广义表是线性表的推广,是典型的递归定义。广义表由两部分组成——表头(Head),表尾(tail)。第一个元素称为表头,其余元素称为表尾。广义表的特点:1. 列表的元素可以是子表,而子表的元素还可以是子表。2. 列表可为其他列表共享。3. 列表可以是一个递归的表,即列表也可以是...原创 2020-04-29 21:12:10 · 2817 阅读 · 1 评论