![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
理论基础
嵌入式Linux系统开发
博主就职于芯片原厂,熟悉硬件、STM32单片机、嵌入式 Linux、Android。
展开
-
5.带头结点的双向循环链表
Dbilinkedlist.c#include "Dbilinkedlist.h"D_head * create_Dbilinkedlist_head(void){ D_head * h = malloc(sizeof(*h)); h->first = h->last = NULL; h->num = 0; return h;}void create_order_Dbilinkedlist(D_head * h){ DbiNode * p = NUL.原创 2020-11-04 15:49:54 · 252 阅读 · 0 评论 -
4.带头结点的双链表
bilinkedlistwithhead.c#include "bilinkedlistwithhead.h"head * creat_bilinkedlist_head(void){ head * h = (head *)malloc(sizeof(*h)); h->first = h->last = NULL; h->num = 0; return h;}void creat_order_linkedlist(head * h){ biNode * .原创 2020-11-04 15:48:03 · 131 阅读 · 0 评论 -
3.不带头结点的双链表
bilinkedlist.c#include "bilinkedlist.h"biNode * create_bilinkedlist(void){ biNode * p = NULL; //指向带加入的那一个数据结点 biNode * first = NULL; // 指向第一个结点的指针 int n; while(1) { scanf("%d", &n); if(n == 0) { break; } p = (biNode *)malloc(si.原创 2020-11-04 15:45:34 · 251 阅读 · 0 评论 -
2.带头结点的单链表
linkedlistwithhead.c#include <stdio.h>#include <stdlib.h>#include "linkedlistwithhead.h"/* create_head: 给链表创建一个头结点 无参数 返回值: 返回创建好的头结点的指针 struct head_node **/struct head_node * create_head(void){ struct head_node * head = NUL原创 2020-11-04 15:42:52 · 553 阅读 · 0 评论 -
1.不带头结点的单链表
linkedlist.c#include "linkedlist.h"#include <stdio.h>#include <stdlib.h>/* Create_linkedlist: 创建一个链表 void:无参数 返回值: 第一个节点的指针 Node **/Node * Create_linkedlist(void){ Node * p = NULL; //指向要插入的那个结点 Node * h = NULL; //指向链表的第一个结点 No.原创 2020-11-04 15:40:02 · 279 阅读 · 0 评论 -
手把手教你写链表
本文只讲逻辑,源码参考本文之下的五篇博客(关注后可以往下找)数据结构: 数据结构是计算机存储、组织数据的方式。数据:(data) 是对客观事物的符号表示。在计算机科学是指所有能够输入到计算机中并能够被计算机处理的符号的总数。数据元素: (data element) : 是数据的基本单位,在计算机通常作为一个整体进行描述或处理。数据项(data item):数据项数据的不可分割的最小单位。一个数据元素可以由多个数据项组成。数据对象(data object):是性质相同的数据元素的集合,是数据的一个.原创 2020-11-04 15:36:51 · 494 阅读 · 0 评论 -
死锁
死锁是怎么产生的--------两个原因2.进程推荐顺序不当 进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生死锁。 资源竞争不一定产生死锁。死锁怎么去避免死锁如何解除...原创 2020-10-31 21:38:44 · 173 阅读 · 0 评论 -
《计算机操作系统》(第四版)大全总结
第一章、操作系统(OS)引论计算机系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。操作系统的目标:1、目标:方便性、有效性、可扩充性、开放性2、作用:1、作为用户与计算机硬件系统之间的接口2、作为计算机系统资源的管理者3、实现对计算机资源的抽象3、发展过程:1、人工操作方式:用户独占全机,CPU等待人工操作–带(卡)装卸2、脱机...原创 2019-11-20 08:46:01 · 7487 阅读 · 1 评论 -
面向对象的三大特征
面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。在Java中类中成员的属性有:public, protected, default, private,这四个属性的访问权限依次降低。继承面向对象编程 (O...原创 2019-11-12 11:56:15 · 162 阅读 · 0 评论 -
CPU、GPU、TPU、NPU等到底是什么
GPU即图形处理器,Graphics Processing Unit的缩写。CPU即中央处理器,Central Processing Unit的缩写。TPU即谷歌的张量处理器,Tensor Processing Unit的缩写。三者区别:CPU虽然有多核,但一般也就几个,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大...原创 2019-10-23 17:14:07 · 4330 阅读 · 0 评论 -
《信息技术导论》计算机框架课程(大一)
此课程是计算机学院大一的必修课,对计算机专业大学四年专业课程的学习有提纲挈领的作用,由此可以在脑子里建立起计算机专业的专业知识框架。此课程对计算机的学生来讲十分重要,对想跨专业的学生来讲也可以参考。...原创 2019-10-04 10:21:05 · 816 阅读 · 0 评论 -
ASCII码中可打印字符和不可打印字符
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字...原创 2019-09-26 18:20:24 · 21836 阅读 · 0 评论 -
《计算机操作系统》精炼学习笔记(附原图)
第一章:操作系统引论计算机系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。1.1操作系统的目标和作用1.1.1 操作系统的目标:1)有效性:提高系统资源利用率;提高系统的吞吐量。2)方便性:3)可扩充性:4)开放性:开放性是指操作系统能遵循世界标准规范,特别是遵循开放系统互联(OSI) 国际标准。凡遵循国际标准所开放的硬件和软件,均能彼...原创 2019-09-09 15:26:21 · 760 阅读 · 0 评论 -
野指针——通俗解释
野指针指向一个已删除的对象或申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。需对指针进行初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。如果没有初...原创 2019-09-10 19:47:42 · 199 阅读 · 0 评论 -
C语言中变参函数精讲(Variadic function)
C语言的函数虽然不具备C++的多态性,但也可以接受参数不确定的情况,当然,C语言中的变参函数实际在功能上是受限的,废话不多讲,下面来看看变参函数的边边角角的问题。什么是可变参数我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:int printf( const char* format, …);它除了有一个参数format固定以外,后面跟的参数的个...原创 2019-09-10 20:38:03 · 903 阅读 · 0 评论 -
IP地址与MAC地址(官方原图解释)
注意网络号和主机号的区别。(占字节数不同)原创 2019-09-12 15:09:15 · 211 阅读 · 0 评论 -
TCP/IP协议与套接字的关系
原创 2019-09-12 15:36:55 · 2390 阅读 · 3 评论 -
最大堆和最小堆基本概念(以及栈和堆的区别)
堆和栈的区别:一、堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。二、堆栈缓存方式区别: 1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放; 2、堆是存...原创 2019-09-13 09:57:11 · 2003 阅读 · 0 评论 -
红黑树与AVL树
一、在理解红黑树之前,我们先看一下二叉查找树由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。二叉查找树特性:1、左子树上所有的节点的值都小于或等于他的根节点上的值2、右子树上所有节点的值均大于或等于他的根节点的值3、左、右子树也分别为二叉查找树如图:可以看到如果要查询10的话,10>9因此到他的右子树,右子树根节点为13,10<1...原创 2019-09-13 15:40:42 · 516 阅读 · 1 评论 -
《计算机组成原理》
《计算机组成原理》是2008年1月高等教育出版社出版的图书,作者是唐朔飞。《计算机操作系统》是站在软件的角度看计算机的运行原理,《计算机组成原理》则是站在硬件的角度来看计算机的运行原理。因此这门课对于学习计算机的学生来说非常重要。 对于以后想从事嵌入式系统、操作系统设计等和硬件结合比较紧密的工作的同学,我建议所有的内容都要学好,而如果以后想从事软件相关工作的同学也要学好存储器、输入输...原创 2019-09-15 21:28:40 · 544 阅读 · 0 评论 -
泛型编程(Generic Programming)
泛型编程最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型即是指具有在多种数据类型上皆可操作的含义,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,...原创 2019-09-16 21:43:42 · 1304 阅读 · 0 评论 -
时间复杂度和空间复杂度介绍
一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。时间复杂度是程序运行的时间,也可以说是次数;空间复杂度是程序占用的空间;来自《数据结构》原图官方定义(清华出版社):时间复杂度:首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。...原创 2019-09-06 10:38:18 · 174 阅读 · 0 评论