- 博客(70)
- 资源 (3)
- 收藏
- 关注
原创 分治策略的实现
分解:分解原问题为子问题,这些子问题为原问题的较小规模的问题。解决:递归地解决这些子问题,如果规模小到一定程度,则直接得出答案。合并:合并上述解决地子问题地解,得出最终解。递归情况:当子问题规模比较大时,成为递归情况;基本情况:当子问题规模不需要递归,已经触底时,此时称作基本情况。递归式:刻画算法的运行时间的等式或者不等式,如归并排序中的最坏情况下的时间复杂。
2024-06-02 09:22:27
398
原创 输入缓冲区stdin
连续输入数字和字符出现字符无法录入输入的结束符时回车键,被scanf("%c", &ch);吸收了,所以导致无法输入字符。下图大致可以展示IO设备通过输入输出井实现实时输出输出。由于用户的输入和输出和内存和CPU之间存在着时间差,需要使用控制信号来中断CPU程序,让数据先输入到内存的一段地址中,成为缓冲区,stdin可以理解为这段内存地址。用户通过回车键来结束输入程序,CPU接收到结束的控制信号后,就结束终端。这个过程中回车字符也进入到了内存缓冲区stdin中。这就是为什么会产生上面的问题。
2024-05-30 11:22:54
262
原创 表达式求值
表达式求值是栈中常见的一个问题。但同时表达式树也是解决求表达式很好的数据结构。所以本文将从两个方面来介绍如何通过栈,栈和二叉树实现求解表达式。本文试图从栈和二叉树两个方向对表达式求值问题进行实现。栈在求解过程中,很好地起到了辅助计算地过程,但是无法保存表达式求解地过程,而二叉树可以通过自身地结构特点,完整地保存求解过程,便于其他地方访问。
2024-05-29 21:09:48
304
原创 java语言概述和代码的编译
上述主要讲了java语言的大致发展史,以及如何在vs code中编写java代码,编译java代码。最后还附带了在编译java代码的过程中遇到的问题和解决方法。
2024-05-25 11:15:41
89
原创 指针数组与数组指针的理解
上述代码编译的时候没有报错,但是运行的时候,出现错误,list的内存信息指向了一些未知地方。这里init函数中的形参是指向结构体数组的指针,以上访问list[i]是不正确的。虽然list数组已经分配了地址,但是*list是一个指针,list+1指向了一个未知的位置,而不是list[1].指针在C语言中有着举足轻重的地位。指针的本体是一个整形地址,地址在汇编中是很常见的概念,硬件语言中,地址信息一般以数字的形式存放与代码中,只是C语言为了隐藏硬件中的细节,从而定义了指针的概念。
2024-05-24 18:00:45
390
2
原创 多态性与虚函数
多态性时面向对象的一个重要特性,主要由重构和虚函数来实现。重构函数时一种静态的多态性,在编译时完成。虚函数则提供了一种动态多态性,在程序运行时体现。下面给出了静态关联和动态关联的4个例程,大致给出了多态性在面向对象中的应用。
2024-05-21 13:48:13
546
原创 递归问题的初级理解
当有新的系统调用发生,那么CPU环境和AP,FP指针会压入栈中,保存起来,CPU执行新的系统调用。如果想要知道函数是如何被调用的,在C语言层面是无法知晓的,从下图可以看到C语言作为一种高级语言,是用户通过用户接口从上至下地调用了系统方法从而实现了相关功能。所以非递归化首先需要申请一个栈,然后采用循环结构,f(n)中,如果n等于1了,循环终止,否则压入栈中保存起来。了解了递归地原理之后,可以发现函数调用,或者说系统调用其实就是用栈来实现地,采用先进后出地方式,保存和取出调用回来返回值。
2024-05-20 17:23:12
290
原创 malloc 和 free
最近代码中在free一些指针时,总会遇到释放失败,大致的提示是:free_base出现问题。那这是为什么呢?如何解决这个问题呢?
2024-05-19 16:37:33
326
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人