
数据结构
WangGarrison
镜像网站 https://wanggarrison.top
展开
-
数据结构:大数据问题的处理——散列、堆排
题目背景:在文件中产生10 0000个随机数字,数字的取值范围0~32767,按如下要求实现,在实现过程中能够使用的数组最长为10000,个别变量的内存忽略。找到重复次数最多的那个数字(如果有多个,选择任意一个)找到重复次数最多的前100个...原创 2020-10-18 12:40:45 · 575 阅读 · 0 评论 -
数据结构:排序算法汇总
文章目录冒泡排序选择排序插入排序冒泡排序选择排序插入排序原创 2020-10-06 17:33:50 · 248 阅读 · 0 评论 -
数据结构:BF算法 & KMP算法
BF算法KMP算法原创 2020-09-27 18:20:41 · 2997 阅读 · 0 评论 -
数据结构:栈的应用—中缀表达式转后缀表达式、后缀表达式的运算
后缀(逆波兰)表达式中缀表达式:就是我们平时用的标准四则运算表达式,运算符在操作数中间,例如:9+(3-1)*3+10/2后缀表达式:也称为逆波兰表达式,是将运算符写在操作数之后的表达式,例如上式的后缀表达式为:9 3 1 - 3 * + 10 2 / +作用:对计算机而言,中缀表达式是比较复杂的结构,而逆波兰式在计算机看来却是比较简单易懂的结构。因为计算机普遍采用的内存结构是栈式结构,它执行先进后出的顺序计算机如何用后缀表达式求值例如:中缀表达式 9+(3-1)*3+10/2 的后缀表达式 9原创 2020-09-03 13:47:25 · 6506 阅读 · 0 评论 -
数据结构:顺序栈与链栈
栈原创 2020-09-02 13:45:19 · 2706 阅读 · 0 评论 -
数据结构:删除单链表中p节点,时间复杂度O(1)
题目背景在plist中删除p节点,时间复杂度要求O(1)算法因为时间复杂度为O(1),所以常规思路遍历链表是不行的。删除节点,其实是把该节点数据域清除,已知了p节点,那么可以知道它的next节点,所以可以把p节点的下一个节点的数据域赋值给p节点数据域,再让p节点的next指向p->next->next,就实现了p节点数据域的清除,也就间接删除了p节点。如果p是最后一个节点,则只好遍历链表,复杂度O(n)只有p是最后一个节点时间复杂度才是O(n),平均时间复杂度(O(1)*(n-1) +原创 2020-07-27 22:22:42 · 3185 阅读 · 1 评论 -
数据结构:求单链表倒数第k个节点,只能遍历一次链表
题目要求求单链表倒数第k个节点,要求只能遍历一次单链表算法用两个指针p、q来实现,p、q都指向链表开始位置,先让p指针向后走k个位置,然后两个指针同步走,当p指针为空的时候,q指针就是倒数第k个节点C代码LinkList FindNodeOfK(LinkList plist, int k){ if (plist == NULL || plist->next == NULL || k <= 0) { return NULL; } LinkList p = plist, q原创 2020-07-27 21:59:28 · 739 阅读 · 0 评论 -
数据结构:判断两个单链表是否相交
题目要求判断两个单链表是否相交,如果相交则返回第一个相交的节点,如果没有相交则返回NULL算法1、先求两个链表长度的差值,让长的链表指针先走这个差值,如下图让plist1先走到p位置2、完成步骤1后,让两个链表的指针同步向后走,每走一步判断两个节点是否相等,如果相等则直接返回这个节点,如果走到NULL,则两个链表不相交C代码LinkList IsIntersect(LinkList plist1, Linklist plist2){ if (plist1 == NULL || plist2原创 2020-07-27 21:47:14 · 468 阅读 · 0 评论 -
数据结构:判断链表是否有环,若有环找到环入口
步骤一:判断链表是否有环,如果有,则返回相遇的节点,如果没有则返回NULL算法:通过设置快慢指针来判断相遇,快指针一次走两个节点,慢指针一次走一个,若两个指针能相遇则说明有环,返回相遇的节点,若快指针走到NULL都没发生相遇,则说明没环,返回NULLC语言代码:LinkList Loop(LinkList plist){ if (plist == NULL || plist->next == NULL) { return NULL; } LinkList p = plist;原创 2020-07-27 21:22:12 · 571 阅读 · 0 评论