- 博客(111)
- 收藏
- 关注
原创 直接插入排序优化:当要插入数已经大于前一个数时,不用取出再放入监视哨
【代码】直接插入排序优化:当要插入数已经大于前一个数时,不用取出再放入监视哨。
2024-12-02 17:14:33
128
原创 契约式编程的定义和核心思想
Assert:断言是最基本的契约,用于表示程序点必须保持的一个契约。契约式编程的核心思想是通过程序来规定软件模块的权利和责任,以确保程序的正确性。契约式编程在软件开发中有着广泛的应用场景,特别是在需要确保软件组件之间交互正确性和可靠性的场景中。减少错误:通过前置条件和后置条件的验证,可以减少因参数错误或逻辑错误导致的程序崩溃。增强信任:明确的契约可以增强不同模块之间的信任,减少因误解导致的合作问题。提高代码的可维护性:通过明确的契约,开发者可以更容易地理解和维护代码。
2024-11-17 19:45:54
257
原创 关于图存储结构数组表示法
(1)图形结构中,各节点关系是任意的,线性表和树是特殊的图,图中任意两个数据元素之间都可能相关。图的应用管理科学,社会科学,通信工程,语言,逻辑学,物理,化学,电讯工程,计算机科学以及数学分支都可以用图;例如冯唐老师《金线原理》也讲分而治之。(2)图结构比较复杂,任意2个顶点都可能存在联系,因此无法以数据元素在存储区的物理位置来表示元素之间的关系,即图没有顺序存储结构,但可以借助数组的数据类型表示数据元素之间的关系;和树类似,实际应用中----严书161页。
2024-11-13 19:54:35
140
原创 undefined reference to ‘WinMain@16’
int main() 写成了 int mian() ,int mani…建议保存后关闭编译器重开,我的垃圾code::blocks出现这种情况我都是这么干的。有可能是找不到一个参数字节总数为16个的XXX函数。没写主函数main()
2024-11-11 20:17:50
357
原创 高一凡哈夫曼树实现
要求4:在构成哈夫曼树时,求编码:从叶子节点出发走一条叶子到根的路径;译码:从根出发走一条从根到叶子节点的路径;于是对每个节点而言,既需要知道双亲信息,又要知道孩子节点信息。要点2:strcpy里面的参数为字符指针。n个叶子节点最多n-层。要点3:0号单元未用。
2024-11-11 20:07:06
190
原创 常数e的值可以表示为无穷级数: e=1+1/1!+1/2! +1/3! +… 1/n!编写一个程序,计算e的值,其中n是用户输入的整数。输入不考虑0,负数或者其他特殊情况。
常数e的值可以表示为无穷级数: e=1+1/1!编写一个程序,计算e的值,其中n是用户输入的整数。输入不考虑0,负数或者其他特殊情况。小心:数值类型,,下面是阶乘返回int类型,没有得到2.72这个值。
2024-10-28 10:52:36
291
原创 两栈共享空间
于是s.top[0] = s.bot[0] = -1;//1号栈的栈顶和栈底。(4)入栈先修改栈顶指针再入栈;出栈时,先出栈再修改栈顶指针。(2)栈满:s.top[0] + 1 == s.top[1]
2024-10-28 10:29:08
203
原创 数据结构空间扩充空间为什么总是原来的2倍
装填因子为什么50%?因为空间扩充为原来的两倍,而原来的元素为现在容量的一半。总体耗时O(n),扩充为空间为n,所以分摊时间O(1)
2024-10-28 09:29:27
247
原创 递归与倒序---十进制转换二进制
对比:n>=1,若n=1时,调用to_binary(1/2==0);最后一次进入to_binary(0),r=0%2==0,所以首位打印出来的是0!n>=0,等于0时是死循环!因为不断相除肯定为0!
2024-10-25 11:33:17
172
原创 殷人昆老师c语言第2版3.3栈的应用
从左到右扫描,把所遇到的左括号放入栈中。每当在后续的扫描过程中遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,并 删除栈顶的左括号。只要遇到左括号就入栈,如果遇到右括号,就要看栈顶如果栈不空,,括号课配对;从左到右扫描字符串,每一个右括号将于最近出现的那个未匹配的左括号匹配。如果表达式扫描完,栈不空表示站内有左括号但再无右括号配对!李冬梅老师相比,给出括号的左括号何右括号匹配的具体位置!如果栈空,表示右括号无左括号与之配对,,报错!
2024-10-23 08:59:53
200
原创 出栈序列合法性判断
遍历出栈序列的每个元素,对于每个元素执行以下操作: 如果当前元素等于指针指向的元素,则将指针移动到下一个元素,模拟该元素入栈后立即出栈。如果当前元素不等于指针指向的元素,但等于栈顶元素,则将栈顶元素出栈。如果当前元素既不等于指针指向的元素,也不等于栈顶元素,则将指针指向的元素入栈,直到栈顶元素与当前元素相等。通过上述方法,我们可以有效地判断给定的出栈序列是否合法,这在编程竞赛和面试中是一个常见的问题。如果在任何时候栈的大小超过了最大容量,或者无法匹配出栈序列中的元素,则该序列不是合法的出栈序列。
2024-10-22 07:09:10
532
原创 殷人昆顺序栈基本操作
(3)另一个极端情况出现在栈底:如果栈空即top==-1,则退栈操作执行栈空处理。栈空处理一般不是出错处理,而是使用这个栈的算法结束时需要执行的处理。(2)top是最后加入元素的存储位置。进栈时,应先检查栈是否为满。栈允许存放最后的位置为maxsize-1;top==maxsize-1则说明栈满。若有新元素进栈,会发生栈溢出,程序会利用realloc再次申请空间。top<maxsize-1,则top+1,可以进栈。退栈时栈空不是错误,而是使用栈的某种处理结束,执行栈空处理;进栈时满栈,需要做溢出处理。
2024-10-18 10:36:19
149
原创 c++文件读取,删除,指定行
参考:https://blog.csdn.net/qq_35459198/article/details/105485486?
2024-10-12 13:48:10
266
原创 顺序表删除所有x元素
精华:::记忆指针和检测指针;若s.data[i]!还有顺序表插入和删除注意修改表长,,我也容易忘!好处:避免删除一个元素就要进行大量移动!我写的有两个地方的错误:我标为了重点。精华:::::记忆指针和检测指针。
2024-10-09 17:22:39
205
原创 双向链表基本操作实现--建议做题时画图 切不可死记
p的后继节点的指针就会丢掉,插入失败。建议做题时画图 切不可死记。建议做题时画图 切不可死记。
2024-10-08 15:37:33
139
原创 C++引用(变量引用、数组引用与数组指针、引用本质-指针常量、常量引用)
C语言 ——对数组名进行解引用,取地址,还有sizeof和strlen进行操作解析_对数组名解引用得到什么-CSDN博客C++引用(变量引用、数组引用与数组指针、引用本质-指针常量、常量引用)_c++11 数组引用-CSDN博客
2024-10-07 10:07:22
222
原创 美团餐馆预订管理信息系统--课程设计李冬梅
其中,检索策略总计包括以下6种:基于顺序表的顺序查找、基于链表的顺序查找、基于顺序表的折半查找、基于二叉排序树的查找、基于开放地址法的散列查找、基于链地址法的散列查找。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图。能够将数据结构课程中所学的基本知识融会贯通,综合运用所学的知识解决相关的实际问题,能够把所学知识(包括算法和结构)在计算机上用编程语言加以实现,并且能够根据实际需求创建自己的数据结构和实现自己的算法。
2024-10-07 08:48:17
1742
原创 数据结构-基于不同策略的英文单词的词频统计和检索系统
其中,检索策略总计包括以下6种:基于顺序表的顺序查找、基于链表的顺序查找、基于顺序表的折半查找、基于二叉排序树的查找、基于开放地址法的散列查找、基于链地址法的散列查找。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图。能够将数据结构课程中所学的基本知识融会贯通,综合运用所学的知识解决相关的实际问题,能够把所学知识(包括算法和结构)在计算机上用编程语言加以实现,并且能够根据实际需求创建自己的数据结构和实现自己的算法。
2024-10-07 08:26:27
1171
原创 李冬梅老师单链表删除---条件的一点解释(主题 阅读示例)
这个是李冬梅老师的写法,其余均为殷人昆教授的写法!!测试函数如下: 测试结果,和殷人昆教授的不太一样p->link==NULL,是i>.n的情况;;;j>i-1是ilink==NULL时,i=节点数n+1然后插入7个数,在第8位置删除和第九位置删除也是为了测试 i=8即删除位置是8,但是链表只有7个节点即p->link==NULL(i=8
2024-10-06 20:50:42
228
原创 李冬梅老师习题集第2章线性表--算法设计2,3,4,5
算法思想:从原来两个链表中依次再去节点,通过更改节点的指针域来重新建立元素之间的线性关系,得到一个新链表。关键点有2个:(1)保证新表与原表顺序相反,需要利用头插法建立单链表,而不能用尾插法(2)当一个表到达尾节点为NULL时,另一个非空表的剩余元素依次摘取,依次链接在LC的表头节点之后,而不能全部直接连接在LC表的最后(因为采用的是头插法)假设待合并的链表LA,LB,合并后的新表LC(lc是头指针,lc=la,lc使用la链表的头结点)。
2024-10-06 15:29:14
478
原创 MT1242三个非负整数
0 + 0 + 2 = 2 (0 + 2 + 0 = 2 2 + 0 + 0 = 2 可以和左边等式看做同一种)0 + 1 + 1 = 2 (1 + 1 + 0 = 2 1 + 0 + 1 = 2 可以和左边等式看做同一种)给定一个正整数N,将其分解为3个非负整数的累加和,并统计出这样做的方法数。好的算法是不断努力和反复修正的过程!优化由于非递减i<=j<=n-i-j。MT1242三个非负整数。
2024-10-06 09:03:15
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人