zl程序教程

您现在的位置是:首页 >  后端

当前栏目

宝典——数据结构和设计模式

2023-09-14 09:04:37 时间
如果栈B不为空,直接弹出B的元素。 如果栈B为空,则依次弹出栈A的元素并压入栈B中,再弹出B中的元素。 3 heap和stack的区别

经常需要操作的内存可分为以下几个类别:


堆区:一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。(它与数据结构中的堆是两回事,分配方式类似于链表) 全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。 文字常量区:常量字符串就是放在这里的。 程序代码区:存放函数体的二进制代码。

heap是堆,stack是栈。
stack的空间由操作系统自动分配/释放,heap上的空间手动分配/释放。
stack的空间有限,heap有很大的自由存储区。
C中的malloc函数分配的内存空间即在堆上,C++对应的new操作符。
程序在编译期对变量和函数分配内存都是在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。

stack的存取效率较快。
stack申请效率比较快,heap比较慢,而且容易产生碎片,不过用起来方便。


5 一个包含n个节点的四叉树,每一个节点都有4个指向孩子节点的指针,这个四叉树有_____个空指针。

4∗n−(n−1)=3n+1


排序是否稳定:待排序文件中,具有相同关键字的记录,经过排序后记录之间的相对次序是否保持不变。
内部排序:整个文件都是放在内存中处理,排序时不涉及数据的内、外存交换。
外部排序:排序过程中要涉及内、外存交换。

分治法:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归的解决这些子问题,然后将这些子问题的解组合为原问题的解。


输出为:123456789, 5789
如果交换d和s的定义顺序,则输出结果为123456789, 123456789


指在程序的执行过程中动态的分配或者回收存储空间的内存分配方法。相对于静态内存分配的特点:
1. 不需要预先分配存储空间
2. 分配的空间可以根据程序的需要扩大和缩小
void *malloc(unsigned int size);
void free(void *p);


8 输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置。例如,“yyabcdabjcabceg”,输出结果为abc和3.
9 strstr(),返回值是主字符串中字符子串的位置以后的所有字符。(不能使用任何C程序已有的函数)
10 将一句话里面的单词进行倒置,标点符号不倒换。例如“i come from tianjian.”变成“tianjin. from come i”。

自动化测试可以让测试人员从枯燥无味的手工重复性测试中解放出来,并且提高工作效率,通过自动化测试结果来分析功能和性能上的缺陷。


一个测试结束的标准可以查看已提交的bug是否已经全部解决并已验证关闭,一般来说,bug验证率在95%以上,并且没有大的影响功能的bug处于未解决状态,就可以测试通过。


在一个测试计划中可以包含需要测试的产品的特点和主要功能模块,列出需要测试的功能点,并标明侧重点;测试的策略和记录(测试工具的确认,测试用例等文档模板,测试方法的确定);测试资源配置(确定测试每一阶段的任务和所需资源)。


功能测试主要是黑盒测试,由测试人员进行,主要验证产品是否符合需求设计的要求;可用性测试主要是由用户(或者测试人员模拟用户行为)来进行的测试,主要是对产品的易用性进行测试,包括有效性(effectiveness)、效率(efficiency)和用户主观满意度(satisfication)。其中有效性指用户完成特定任务和达到特定目标时所具有的正确和完整程度;效率指用户完成任务的正确和完整程度与所使用资源(如时间)之间的比率;满意度指用户在使用产品过程中所感受到的主观满意和接受程度。


白盒测试有几种测试方法:条件覆盖、路径覆盖、语句覆盖、分支覆盖。其中分支覆盖又称判定覆盖,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。


学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式 说实话,感觉不是特别多,可能没遇到过多场面, 所以对应用场景没感觉吧。 反正,各种模式就是把类的实例传来传去,久而久之,产生了一些规律。。。:) # 轮子,引擎, 车身这些定义好了都不需要变动 class Wheel: def __init__(self, name): self.
学点PYTHON基础的东东--数据结构,算法,设计模式---观察者模式 按照小明明的设计模式抄抄看看。。 http://dongweiming.github.io/python-observer.html # 这个是观察者基类 class Subject(object): def __init__(self): self.
数据结构和算法基础之时间复杂度为O(n²)排序(偏向前端方向) 在实际项目开发中,不管是后端还是前端,最基本的操作就是数据的CRUD。换句话说,后端是根据某些条件组装数据,前端是拿着后端提供的数据,进行数据展示。但是不管在进行数据封装还是展示,其中在特定的场景下,需要根据某些条件,对数据进行排序。而在既定的现有框架下,都有现成的方法对数据进行排序处理。 但是,在开发中,有没有想过,这些排序底层是如何实现的,还有就是针对不同的数据,不同的排序是否在性能方面有不同的体现。