摘要: 栈的结构比较简单,实现的过程中前面已经写好的线性表代码可以直接拿来用。只要在头文件中#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 阅读(127) 评论(0) 推荐(0)
摘要: 与传统链表不同的是,业务节点Student首地址与node首地址重叠,底层并不关心业务节点Student如何,只负责把node节点串起来。链表算法与具体业务节点分离! 参考C语言代码(附调试代码): linear_linklist.c文件(上层应用): linklist.h文件(头文件): link 阅读全文
posted @ 2018-03-16 09:23 Alexadar 阅读(127) 评论(0) 推荐(0)
摘要: 底层库: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 阅读(214) 评论(0) 推荐(0)
摘要: 样例: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)
摘要: 浅拷贝和深拷贝 阅读全文
posted @ 2018-03-16 09:02 Alexadar 阅读(222) 评论(0) 推荐(0)
摘要: C语言中的const并不是真正意义上的const,C语言中const变量是只读变量,有自己的存储空间,在C语言中,仍然可以通过间接赋值修改a的值。 实际上,在C++语言中,const建立的是一个符号表。用指针间接赋值的时候,会重新开辟一块内存空间,间接修改a的值只是修改了,新开辟的内存空间的值,和原 阅读全文
posted @ 2018-03-16 08:50 Alexadar 阅读(201) 评论(0) 推荐(0)