随笔分类 -  算法导论学习笔记

摘要:栈的结构比较简单,实现的过程中前面已经写好的线性表代码可以直接拿来用。只要在头文件中#include "seqlist.h"就可以了。 创建栈相当于创建线性表,销毁栈相当于销毁线性表。push相当于在线性表尾部插入元素,尾插法,pop相当于从线性表尾部拿出元素。 C语言代码: main_seq_st 阅读全文
posted @ 2018-03-16 09:34 Alexadar 阅读(107) 评论(0) 推荐(0)
摘要:约瑟夫问题:N个学生围成一圈玩狼人杀,从第一个开始报数,第M个将被狼人杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 可以用循环链表实现: C语言代码 阅读全文
posted @ 2018-03-16 09:30 Alexadar 阅读(198) 评论(0) 推荐(0)
摘要:参考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 阅读全文
posted @ 2018-03-16 09:20 Alexadar 阅读(208) 评论(0) 推荐(0)
摘要:样例:A[8]={2,8,7,1,3,5,6,4} 关键是数组划分部分。 比较简单,所以直接给出C语言代码: 阅读全文
posted @ 2018-03-16 09:14 Alexadar 阅读(124) 评论(0) 推荐(0)
摘要:样例: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语言代码(附调试): 阅读全文
posted @ 2018-03-16 09:09 Alexadar 阅读(217) 评论(0) 推荐(0)
摘要:插入排序的伪代码: 执行情况: 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)。 阅读全文
posted @ 2018-03-06 23:26 Alexadar 阅读(171) 评论(0) 推荐(0)