数据结构
文章平均质量分 92
草莓味的风
keep clam and code on
展开
-
【排序算法合集】十大排序算法(Java实现)
写在前面的总结一、冒泡排序冒泡排序算法需要多次重头到尾地访问待排序的数列,每次都依次比较相邻的两个元素,如果他们的顺序错误就交换着两个元素,重复多次,直至某一次遍历没有交换,说明排序完成。代码实现:参考链接:https://blog.csdn.net/shipfei_csdn/article/details/103225224?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221605.原创 2021-08-18 12:02:06 · 445 阅读 · 0 评论 -
【二叉树】指定结点到根节点的路径
利用后序遍历非递归的思想,结合栈。如果某结点的左右子树均未找到指定结点,则将该结点出栈,那就需要标记一下当前结点的访问状态。直到找到结点,或者遍历完树仍未找到(此时栈空)。typedef struct BNode{ int data; BNode *lchild,*rchild;}*BTree;typedef struct { BNode* bt; ...原创 2018-11-03 15:15:13 · 7429 阅读 · 0 评论 -
【链表】查找倒数第k个结点
带头结点的单链表,结点结构为(data,next),在不改变链表的前提下,设计一个尽可能高效的算法,查找出链表中倒数第k(k为正整数)个位置上的结点。 第一种方法是先循环一遍链表确定结点个数n,则倒数第k个结点就是就是正数的第n+1-k个,然后在遍历一次链表就可以找到指定结点了,但显然需要遍历两遍链表。 第二种方法可以使用两个指针,第一个指针先走k-1步,...原创 2018-11-05 21:27:19 · 9702 阅读 · 0 评论 -
【链表】两个无序链表合并成递增有序链表(利用原表空间)
思路: 1、排序 先将两个链表从小到大排序,调整成两个有序链表。2、合并 使用两个工作指针PA和PB分别从两个表头开始循环。 当两个工作指针均非空时,如果PA->data大于PB->data,将PB插入到新链表中,PB指针向后移动;如果PA->data小于PB->data,将PA插入到新链表中,PA指针向后移动;如果PA-...原创 2018-11-13 22:33:40 · 3524 阅读 · 0 评论 -
求二叉树的宽度和高度
一、二叉树宽度 利用队列保存每一层的结点,借助层次遍历的思想(先将根节点入队,队列非空时每出队一个结点将其左右子节点入队),队列中的结点个数就是下一次的循环次数,当循环结束后队列中的结点就全部是下一层的结点。int width(BTree t){ if(t==NULL) return 0; queue <BNode*> que; que...原创 2018-11-12 15:29:03 · 1292 阅读 · 0 评论