![](https://img-blog.csdnimg.cn/2020021722324512.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
提升工程编码和思维能力
江下枫
这个作者很懒,什么都没留下…
展开
-
理解C语言中的函数声明和函数指针
0x10 硬件调用首地址为0的子例程学过C语言的人都知道,函数在调用之前,要么已经被定义了,要么已经被声明了,不然会提示找不到该函数。站在程序员的角度上来说,更多时候,我们调用的是函数的指针,而非函数本身。举例来说,如果我们要编写一段嵌入式程序,模拟计算机在启动时,硬件调用首地址为0的内存的子程序,可能最终编写的代码如下(*(void(*))()0)()相信大家看到此代码,无不心生恐惧,...原创 2020-03-01 10:42:01 · 890 阅读 · 0 评论 -
从Java角度说起C++虚函数
多态是面向对象的一大特征,接口的多种不同的实现方式即为多态,简而言之方法的重载与重写父类对象的引用指向子类对象的实体在Java中,如果使用我们刚刚所述的,基类引用指向派生类对象实体,那么调用该引用的函数,实际上会调用派生类的函数,给个例子,相信大家会有更加深刻的体会。public class Test { public static void main(String[] args) ...原创 2020-02-28 20:43:15 · 283 阅读 · 0 评论 -
Linux 内核中链表的定义和常见的操作
0x10 链表演化链表是内核中最常见的数据结构,也是其他数据结构的基础。和数组显著的区别是,链表无需占用连续的存储单元,在编译时,也不需要知道其长度,可以动态插入或者删除元素。下图是一个典型的双向链表图1 双向链表 1通过前驱和后继两个指针,就可以遍历整个链。如果打乱前驱和后继的关系,就形成了二叉树;如果设计更多的指针域,就可以构成各种复杂的数据结构;如果减少一个指针域,就形成单链表,如果...原创 2020-02-19 22:01:37 · 278 阅读 · 0 评论 -
Python3 Socket编程
Python 是一种简单的脚本语言,拥有强大的功能,笔者昨晚接触一个项目,用到 Socket 编程,之前就用过 Python 写过 Socket 项目,然记忆苦短,早已忘之。在网上搜到的各种信息良莠不济,并不能达到理想的效果。因而,在这里将 Python Socket 编程记录一下,方便网友参考,也方便自己日后用到此文。1 TCP Socket 服务器编写1.1 基础知识1.1.1 调用 s...原创 2019-08-10 18:21:19 · 1933 阅读 · 0 评论 -
简单的算法题-总收益最大化
牛客网题目解析package com.my.data;import java.util.Scanner;public class NiuKe { public static void main(String[] args){ Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextI...原创 2019-08-27 20:29:30 · 1611 阅读 · 0 评论 -
简单的算法题-斐波拉契数列之跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。1 简单粗暴的递归法对于这种问题,只要找到递推关系即可,我们假设n级台阶一共有 f(n) 种跳法,那么这个第n个台阶可以由第 n-1 (倒数第二个)个台阶跳一次到达,也可以由第 n-2 (倒数第三个)个台阶,跳两次到达,故有:f(n) = f(n - 1) + f(n - 2...原创 2019-08-28 23:22:05 · 209 阅读 · 0 评论