数据结构
文章平均质量分 80
链表、栈、队列、树、图、查找、排序
tsunaa
这个作者很懒,什么都没留下…
展开
-
【数据结构】二叉树的先序、中序、后序遍历(递归做法)
【PTA】树与二叉树练习题 01-二叉树的遍历原创 2020-11-30 17:22:06 · 788 阅读 · 0 评论 -
【数据结构】利用先序扩展序列建立二叉树
利用先序扩展序列建立二叉树 题目 先序扩展序列是指用特定的字符表示空子树。这里用‘#’表示二叉树为空。 现给出一个字符串为二叉树的线序扩展序列,要求建立一棵二叉树。 思路 定义二叉树 初始化二叉树 定义二叉树 C定义二叉树 typedef struct TNode *Position; typedef Position BinTree; struct TNode { ElementType Data; BinTree Left; BinTree Right; };原创 2020-11-30 18:03:26 · 5402 阅读 · 0 评论 -
【数据结构】单链表比第一个元素大的放在前面,其他放在后面
【数据结构】单链表比第一个元素大的放在前面,其他放在后面 题目 一单链表,以第一个元素为基准,将小于该元素的结点全部放到前面,大于该结点的元素全部放到后面。 时间复杂度要求为O(n),不能申请新空间。 分析 将所有小于第一个元素m的元素移到m前面去,则遍历单链表,比m小的用头插法放到L后面。其他则不做改动 解题思路 有几个函数? 1. 初始化链表 2. 创建单链表 3. 输出单链表 4. 改变单链表(本次程序的关键) 改变单链表函数怎么写? 重复一下,改变单链表函数的功能是:遍历单链表,比第一原创 2020-11-02 11:47:17 · 1960 阅读 · 2 评论 -
【数据结构】 合并两个非递减有序单链表为一个A-B的非递减有序单链表
【数据结构】 合并两个非递减有序单链表为一个A-B的非递减有序单链表 题目 实现两个单链表La和Lb的相减链表LC,LC的元素为LA中有但LB中没有的元素。LA和LB都为非递减有序链表 分析 LC是LA和LA的相减链表,即LC= LA-LB,即LC里的元素是在LA的基础减去LB里也有的元素。比如LA的元素为1,3,5,7,9,LB的元素为2,4,5,7,9,那么LC的元素为1,3 。 解题思路 再重复一下我们的分析: LC是LA和LA的相减链表,即LC里的元素是在LA的基础减去LB里也有的元素。原创 2020-11-02 11:47:31 · 2399 阅读 · 1 评论 -
【数据结构】C/C++实现二叉树的层序遍历
【数据结构】二叉树的层序遍历 题目 给你一棵树,要求按照层序遍历的顺序打印结点。 思路 层序遍历的意思是一层一层地遍历树,即BFS。BFS用队列来维护。 先将根节点放进队列中。 每次从队列中取出一个结点,访问它。 遍历它的孩子结点,并把它们放进队列中。 直至队列为空。 举个例子: 刚开始将根节点放进队列中,此时队列为【A】。 从队列中取出一个元素,为A。输出A。 遍历A的所有孩子,将B、C放入队列中。此时队列为【B、C】。 从队列中取出一个元素,为B。输出B。 遍历B的所有孩子,将D、F放入队列原创 2020-11-30 17:04:35 · 506 阅读 · 0 评论 -
【数据结构】两个有序链表序列的合并
【数据结构】两个有序链表序列的合并 题目 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例: 1 3 5 -1 2 4 6 8 10 -1 输出样例: 1 2 3 4 5 6 8 10 思路 类数组中原创 2021-03-19 17:19:10 · 5504 阅读 · 5 评论