自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 单链表反转

面试经典问题:单链表反转问题零、前言一、就地反转二、头插法反转零、前言最近在复习数据结构,复习到链表的时候,看到了很经典的问题,链表的反转。这个题在面试的时候很容易考到,特此过来总结以下。一、就地反转就地反转,不借助其他链表,单纯通过前后交换实现链表反转。方法都在图里了。(以下演示的为无头节点链表的反转,与有头节点链表反转方法大同小意)奉上代码struct ListNode* ReverseList(struct ListNode* pHead ) { // write code

2021-01-10 16:42:00 133

原创 Linux下编程: 进程的创建与终止

以下知识来自于《Unix/Linux系统编程手册》24,25章1. 创建新进程:fork()在诸多应用中,创建多个进程时任务分解时行之有效的方法。系统调用fork()允许一进程(父进程)创建一新进程(子进程)。具体做法是,新的子进程几近于对父进程的翻版:子进程获得父进程的栈,数据段,堆和执行文段的拷贝。#include <unistd.h>pid_t fork(void)//In parent:returns process ID of child on success, or -1

2020-07-20 21:08:58 302 1

原创 Linux下编程-I/O操作(二)

Linux下编程- I/O 操作(二)原子操作所有的系统调用都是以源自操作方式执行的。 之所以这么说,是指内核保证了某系统调用中的所有步骤会作为独立操作而一次性家以执行,期间不会为其它进程或线程中断。竞争状态原子性是默写操作的一圆满成功的关键所在。 特别是它规避了竞争状态(race condiitions). 所谓的竞争状态是指:操作共享资源的两个进程或线程,其结果取决于一个无法预期的顺序,因为这些进程获得CPU使用权的先后顺序我们并不知道.以独占的方式创建一个文件#include <un

2020-07-14 19:47:43 149

原创 Linux下编程之I/O操作(一)

Linux下编程I/O操作(一)最近刚刚回国, 因为疫情的缘故在上海隔离. 闲来无事,想要复习复习Linux的相关知识, 最近看到了关于文件的I/O操作, 特来此记录一下, 以后忘记了也能看看.Linux下的I/O 操作比较常用的有4个函数, 分别是: open(), read(),write(),close.()和windows下的fopen()之类的函数相似.open()函数原型如下:#include <sys/stat.h>#include <fcntl.h>/

2020-07-13 13:27:22 328

原创 排序小总结. 冒泡排序, 选择排序, 插入排序, 快速排序, 堆排序

冒泡排序//// Bubble_Sort.c// Data_structure//// Created by 양송 on 2020/06/12.// Copyright © 2020 양송. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <time.h>void print_list(int* List, int size){ for(i

2020-06-12 22:38:13 151

原创 数据结构复习7, 简单的实现一下哈希表

//// Hash_Table.c// Data_structure//// Created by 양송 on 2020/06/06.// Copyright © 2020 양송. All rights reserved.//#include <stdio.h>#include <stdlib.h>typedef struct node{ char* name; struct node* next;}Node;typedef st

2020-06-06 21:48:17 101

原创 数据结构复习6.1,堆的插入与删除

//// heap_sort.c// Data_structure//// Created by 양송 on 2020/06/06.// Copyright © 2020 양송. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <time.h>#define parent(x) (x-1)/2#define left(x) (2*x)+1#def

2020-06-06 18:41:24 113

原创 数据结构复习6, 堆,堆排序

堆是什么简单的来说, 堆就是使用数组而生成的二叉树. 不同于搜索二叉树的是, 搜索二叉树左孩子永远要比右孩子要小。而堆则分为最大堆以及最小堆. 最大堆的意思就是说从root开始, 它的每个子树都要比root小, 最小堆则与最大堆相反.堆的实现,以及排序#include <stdio.h>#include <stdlib.h>#include <time.h>#define parent(x) (x-1)/2#define left(x) (2*x)+

2020-06-06 17:24:01 103

原创 数据结构5.1 有向图的邻接矩阵实现,BFS,DFS

C语言实现昨天发了一个使用邻接表实现的有向图与无向图. 今天补上一个邻接矩阵实现的有向图与无向图. 这个比起邻接表真的是简单太多了.代码如下://// Direct_Graph_AdjMatrix.c// Data_structure//// Created by 양송 on 2020/06/05.// Copyright © 2020 양송. All rights reserved.//#include <stdio.h>#include <stdlib.

2020-06-05 20:51:36 670

原创 数据结构复习5: 有向图,无向图的邻接表实现,以及DFS和BFS

#有向图, 无向图的邻接表实现邻接表长下面这个样子:上图所对应的有向图呢, 长下面这样无向图呢就更简单了 ‘A’ 连接着 ‘B’, ‘B’ 当然叶连接着’A’:它所对应的邻接表就应该长这个样子了:实现我在写这个之前,看了很多网上的资料, 发现不是很好理解, 我就自己研究了一天, 无非就是绘制几个链表. 像下面那样:我就是这么理解的, 这里的A指向的B连接着下方数组[1]的B, 通过索引的方式. 有了这个想法, 就很好实现了. (要是我这个有问题, 或者下面的代码实现的不对,请私信我,

2020-06-04 22:02:20 2329

原创 数据结构复习4.0.1 二叉搜索树节点的删除

节点删除二叉搜索树节点的删除分为三种情况分别是:第二种情况:第三种情况:代码实现void Get_Father_node(Bin_T* T, Bin_T* child_node, Bin_T** father_node){ if(T!=NULL) { if(T->left == child_node || T->right == child_node) { *father_node = T

2020-06-01 21:42:52 120

原创 数据结构复习4. 二叉搜索树的插入, 遍历, 节点的删除(C语言实现)

//// Binary_Tree.c// Data_structure//// Created by 양송 on 2020/05/29.// Copyright © 2020 양송. All rights reserved.//#include <stdio.h>#include <assert.h>#include <stdlib.h>//写一个左边可被二整除,右边不可以被二整除的二叉树typedef struct node{

2020-06-01 21:10:04 144

原创 数据结构复习4.1 后缀表达式转中缀表达式与前缀表达式- 二叉树实现

之前总结了利用栈来将中缀表达式转为后缀与前缀表达式的规则,并且附上了代码。最近复习到了树,正好使用二叉树来实现一下。表达式树表达式长成下面这个样子:下图为:后缀表达式 :ACB*+D/ 的表达式树。前缀表达式为:/ + A * C B D中缀表达式为: A + C * B / D...

2020-05-31 13:11:28 679

原创 数据结构复习2.1 链表队列,链表循环队列

普通队列与循环队列的链表实现单队列实现循环链表单队列实现队列的定义就不赘述了,直接上代码把。为了方便使用了无头的链表。插入方式为尾插法。#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef struct node{ int data; struct node* next;}List;typedef struct{ int rear; int front; List*

2020-05-26 21:04:34 217

原创 数据结构复习1.1, 链表栈

栈的链表实现实现头插法实现栈尾插法实现实现栈的定义以不用多说。链表栈的实现主要是依靠头插法将元素插入链表。尾插法也可以就是有点麻烦。头插法实现栈#include <stdio.h>#include <stdlib.h>#include <assert.h>//written by 真的木有鱼丸啊//定义一个链表typedef struct node{ int data; struct node* next;}List;//定义一个栈t

2020-05-26 15:35:57 99

原创 数据结构复习3. 链表-循环链表(C语言实现)

循环链表的实现循环链表插入方式头插法尾插法C语言 实现上述代码执行结果循环链表循环链表就是在单链表的基础上,尾节点总是指向头节点的。如下图所示:插入方式只要是链表就存在两种插入放下,下面介绍循环链表的头插法,与尾插法。头插法循环链表的头插法与单链表的头插法相似。假设链表中存在一个元素。生成一个新元素,并在头节点后方插入。插入完成。尾插法尾插法的方法也与单链表的尾插法类似,只不过尾节点要指向头节点罢了。假设链表中有一个元素。生成新节点,插入在尾节点之后,并且将新的尾

2020-05-25 21:33:07 218

原创 数据结构复习3. 链表-双向链表(C语言实现)

双向链表双向链表顾名思义,各个节点前后都相连。就像下图表示的那样。尾插法既然时链表,那么就存在两种元素的插入方式。一为头插法,二为尾插法。我们现在介绍一下尾插法如何实现。假设当前链表中有一个元素。然后在元素1的后面插入新的节点。插入完毕头插法双向链表的头插法与单链表的头插法是相似的。只不过增加了向前的指针罢了。假设链表中已有一个元素生成新节点,并在head后方插入新节点插入完成.C语言代码#include <stdio.h>#include &l

2020-05-24 21:17:06 149

原创 数据结构复习3: 链表(C语言实现)

使用C语言实现单链表单链表头插法尾插法C语言 实现单链表链表,顾名思义,将数据向链子一样的窜起来。可以从中间提取数据,也可以从中间插入数据。当然,链表分为单向链表,双向链表,以及循环链表。今天我们来看看那单链表该如何实现。链表的插入方法分为两种一种为头插法,另一种是尾插法。下面我们来看一下这两种插入方法。头插法首先我们先来看一看头插法。其实我并不喜欢这个名称,这个名称乍一听上去根本不明白什么意思。头插法简单一点来说就是,每个新节点都在头节点后面插入,而不是尾节点后面插入。这就造就了,使用头插法之后

2020-05-23 17:11:21 178

原创 数据结构复习2-队列(c语言 数组实现)

数据结构复习-队列(Queue)何为队列C语言 实现功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入何为队列队列的意思,顾名思义,就像我们排队买票一样,最先来的人也最先买。C语言 实现使用数组实现是最简单的方法,首先需要两个

2020-05-22 21:44:31 345

原创 复习数据结构系列——1. 栈(C语言数组实现)

1. C语言数组实现-栈何为栈何为栈栈是个类似水桶一样的容器,最开始导进去的水总是最后被倒出(frist in last out).栈的初始化,如下图所示:当数字1被放入栈时,如下图所示:当2被放入时,如图所示:将栈顶元素拿出(pop),如图所示:栈也可以看作是一个竖起来的数组,有两个指针分别指向bottom以及top, 当有元素入栈时,top向上移动。当需要出栈时,top向下移动。C语言代码,如下所示:#include <stdio.h>#include <t

2020-05-21 19:49:30 265

原创 中缀表达式转前/后缀表达式-利用栈(C语言)

中缀表达式转前/后缀表达式-利用栈(C语言)中缀表达式转前缀表达式规则中缀表达式转后缀表达式规则中缀表达式转前缀表达式规则使用两个栈,运算符栈,数字(操作数)栈.从右到左遍历表达式.遇到操作数时,直接放入操作数栈中. 反之,遇到运算符时,如果运算符栈为空或栈顶操作符为右括号’ )’,直接入栈,如果不为空,比较其与运算符栈顶运算符的优先级:若当前操作符优先级比栈顶运算符的较高或相等,将运算符压入运算符栈. 反之,将运算符栈顶的运算符弹出并压入到操作数栈中,再次与运算符栈顶运算符相比较;如果是左括号

2020-05-19 21:56:14 2268 1

原创 树莓派4B 入门第一步

新手初入树莓派,刷系统搞了一天,特来记录一下。刷入系统:NOOBS 或者 Raspbian1.1直接在官网下载系统烧录工具(imager),工具分为windows,macos以及Linux 版本。1.2 之后下载系统镜像后解压缩,使用imager工具烧录进sd卡(20分钟左右)打开ssh2.1 刷入成功后,使用micro-hdmi to hdmi的线连接显示器后插入电源(我是用的ipa...

2020-04-03 21:27:34 247

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除