随笔分类 - 算法导论学习笔记
摘要:栈的结构比较简单,实现的过程中前面已经写好的线性表代码可以直接拿来用。只要在头文件中#include "seqlist.h"就可以了。 创建栈相当于创建线性表,销毁栈相当于销毁线性表。push相当于在线性表尾部插入元素,尾插法,pop相当于从线性表尾部拿出元素。 C语言代码: main_seq_st
阅读全文
摘要:约瑟夫问题:N个学生围成一圈玩狼人杀,从第一个开始报数,第M个将被狼人杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 可以用循环链表实现: C语言代码
阅读全文
摘要:参考C语言代码(与普通链表不同处用红色标明) main_circlelist.c文件(上层应用): circlelist.h文件(头文件): circlelist.c文件(底层实现):
阅读全文
posted @ 2018-03-16 09:29
Alexadar
摘要:与传统链表不同的是,业务节点Student首地址与node首地址重叠,底层并不关心业务节点Student如何,只负责把node节点串起来。链表算法与具体业务节点分离! 参考C语言代码(附调试代码): linear_linklist.c文件(上层应用): linklist.h文件(头文件): link
阅读全文
posted @ 2018-03-16 09:23
Alexadar
摘要:底层库:Stu_SeqList是一个结构体,内套Node指针。 上层应用:Student节点。 注意:底层库返回均为void型,上层应用强制类型转换为自所需要的数据类型。写代码先写测试框架(打桩)。 参考C语言代码: linear_seq.c文件(上层应用): seqlist.h文件(头文件): s
阅读全文
摘要:样例:A[8]={2,8,7,1,3,5,6,4} 关键是数组划分部分。 比较简单,所以直接给出C语言代码:
阅读全文
摘要:样例:A[10]={4,1,3,2,16,9,10,14,8,7} 伪代码(用的是最大堆): C语言代码: 递归调用难点,注意边界条件!!!
阅读全文
posted @ 2018-03-16 09:11
Alexadar
摘要:样例:A={13,-3,-25,20,-3,-16,-23,18,20,-7,12,-15,-22,15,-4,7},最大子数组为A[7~10],和为43。 思路:先求出跨中点的最大子数组,再递归的求解左边一半的最大子序列和右边一半的最大子序列,以此类推。 伪代码: C语言代码(附调试):
阅读全文
摘要:插入排序的伪代码: 执行情况: 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 6 3 2 4 5 5 6 3 2 4 4 5 6 3 2 2 4 5 6 3 1 2 4 5 6 3 .... C语言代码: 插入排序算法的时间复杂度为 O(n2)。
阅读全文

浙公网安备 33010602011771号