数据结构与算法
Skyey_6
学习中。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
荷兰国旗问题(利用基数排序思想实现)
荷兰国旗问题:设有一个仅由红、白、蓝3种颜色的条块组成的条块序列。请编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗图案。 算法设计 利用链式基数排序,将红、白、蓝3种颜色分配到3个链表上,然后对链表进行收集。 具体实现 typedef enum{Red,White,Blue}Color; typedef struct ListNode{ Color color; struct ListNode *next; }Node,*LinkList; void FlagA原创 2020-12-15 20:56:42 · 996 阅读 · 0 评论 -
KMP算法(快速模式匹配算法)详解以及C语言实现
KMP算法(快速模式匹配算法)详解以及C语言实现 串的普通模式匹配算法(BF算法),大体思路是:模式串从主串的第一个字符开始匹配,每匹配失败,主串中记录匹配进度的指针 i 都要进行 i-j+1 的回退操作(这个过程称为“指针回溯”),同时模式串向后移动一个字符的位置。一次次的循环,直到匹配成功或者程序结束。 KMP算法相比于BF算法,优势在于: 在保证指针 i 不回溯的前提下,当匹配失败时,让模式串向右移动最大的距离; 并且可以在O(n+m)的时间数量级上完成对串的模式匹配操作; 故,KMP算法称为“快转载 2020-11-08 11:42:56 · 2378 阅读 · 0 评论 -
用两个栈来实现一个队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。 算法设计 初始化两个栈S1,S2 Push:将用户输入的一串数字依次压入S1中,不断弹出S1中的数字并压入S2中 Pop:从S2中弹出一个数字 具体实现 在这里插入代码片 ...原创 2020-10-18 22:42:06 · 183 阅读 · 0 评论 -
用辅助栈实现栈的排序
只用一个辅助栈,实现栈顶向栈底由大到小排序。 算法设计 初始化两个栈:数据栈S和辅助栈sup 首先pop出S的栈顶元素,将其push到sup中 接着,继续pop出S的栈顶元素保存在变量cur中,然后和sup的栈顶元素(temp)比较: ① 若cur>temp,则pop出sup的栈顶元素,push入S,继续和sup的栈顶元素进行比较; ② 若cur<=temp,则直接将cur元素push入B栈内; 重复上述操作直至S栈空,然后将sup中所有元素逐个push入S。 至此,排序完毕原创 2020-10-18 18:04:05 · 1102 阅读 · 0 评论 -
生成代表两个整数相加值的结果链表
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。 例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。 输入:[9,3,7],[6,3] 输出:{1,0,0,0} struct ListNode { int val; struct ListNode *next; }; /** * @param head1 ListNode类原创 2020-10-07 11:11:28 · 317 阅读 · 0 评论 -
输入一个链表,将链表反转后,输出新链表的表头
输入一个链表,将链表反转后,输出新链表的表头 struct ListNode{ int val; struct ListNode *next; }; /** * @param pHead ListNode类 * @return ListNode类 */ struct ListNode* ReverseList(struct ListNode* pHead) { // write code here } 算法设计 创建一个新的链表L,用temp临时存储数据 从头遍历要反转的原创 2020-10-01 19:45:19 · 515 阅读 · 0 评论 -
查找链表中倒数第k个位置上的结点(k为正整数)
已知一个带有表头结点的单链表,结点结构为 data link 假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data域的值,并返回1;否则,只返回0。 算法设计 定义两个指针p和q,让它们指向首元结点。 指针q先遍历list,当q移动到第k-1个结点时,p将加入循环,开始与q一同遍历链表,直到q->next==NULL。 此时指针p指向的结点就是倒数第k个结点。原创 2020-10-01 19:04:47 · 1304 阅读 · 0 评论
分享