- 博客(14)
- 收藏
- 关注
原创 函数指针_C
1.函数指针(1)指针是用来保存地址的,定义指针变量时,也需要明确给出指针变量的类型,使用函数指针调用函数时,直接传入参数,普通调用函数类似,只是将函数名替换为解引用指针变量。(2) 函数指针的意义:可以使用同一个函数中通过使用相同的形参在不同的时间使用产生不同的效果。(3)函数的地址:函数名就是函数的地址,就像数组名可以是数组的地址 int num; // 声明整型变量i...
2018-08-26 19:28:58
290
原创 数据结构_常见排序算法
排序:将一组杂乱无章的数据按照一定的规律(升序或者降序)组织起来排序码:用来作为排序的依据,是数据元素的一个属性域排序算法的稳定性:符合排序码的元素相对位置不发生变化 各种常见排序算法的分类: 1.冒泡排序:时间复杂度:O(n^2)空间复杂度:O(1)稳定性:稳定算法思路:(1)按照升序规则,从前往后冒: [0, bound) 是等待排...
2018-08-16 11:10:55
476
原创 进程控制_1_进程创建
进程创建就是一个进程向内核申请一个新进程来运行部分代码,原进程就称为父进程,新进程就称为子进程。创建成功后,子进程的代码与父拥有相同的代码,并且都运行到同一位置,接下来分别完成各自的代码。父进程调用 fork 函数来创建子进程,父进程调用 fork 后,内核就分配新的内存空间和内核数据结构给子进程,并且将父进程部分数据结构拷贝给子进程,再将子进程加入到系统进程列表中,最后 fork 返回,...
2018-05-16 15:56:59
301
原创 数据结构_队列(基于顺序表和链表)
队列是只允许在一端进行数据操作,在另一端进行删除数据的一种特殊线性表,进行插入操作(入队列)一端的称为队尾,进行删除操作(出队列)的一端称为队头,队列具有先进先出的特性。队列和栈相似,基于顺序表或链表实现,限制对顺序表、链表的操作,减少出错的可能性。 队列按用途可分为三类:普通队列消息队列优先级队列基于顺序表、链表实现队列的基本操作: 队列的基本操作:入队列、出队列、取...
2018-05-08 23:33:44
773
原创 数据结构_栈(基于顺序表和链表)
栈是一种特殊的线性表,只允许在固定的一端进行插入删除元素操作,操作元素的一端称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,栈具有后进先出的特点,栈也可以称为后进先出的线性表。那有了线性表链表为什么还要有栈,栈的操作相比较于顺序表、链表来说操作比较简单,出栈、入栈、取栈顶元素,更简单的操作就限制了操作的权利,也就减少了出现错误的机会,在栈能满足的情况下,就不需要使用顺序表或者链表。以下实现基于...
2018-05-08 00:35:54
742
原创 数据结构_链表3(双向带头结点链表的基本操作)
带头结点的链表,头结点就是一个傀儡结点,用这个结点来表示整个链表,对链表进行初始化也就是对头结点进行初始化,头结点中的数据不具有任何意义,双向链表结点比单向链表多了一个 prev 指针指向前一个结点,比单向链表更高效,进行插入删除结点操作时,不需要遍历整个链表。 以下是一些双向带头结点链表基本操作:// 头文件及结点结构体 3 #include<stdio.h> ...
2018-04-25 18:04:38
348
原创 数据结构_链表2(单向无头结点链表常见问题)
总结一些常见的链表问题。以下例子都是单向无头结点链表,部分带环。1.从尾到头打印链表元素 即逆序打印链表,可以创建一个新的链表,每次找出原来链表的最后一个元素头插到新链表里,再打印出新链表,但是这种办法太麻烦而且效率低。还可以采用递归的思路,在打印当前元素之前递归调用打印函数,递归出口为指针为NULL,每调用一次,传进来的参数就往链表下一个元素移动。下图为3个元素时例子:71 void Li...
2018-04-18 17:48:47
716
原创 数据结构_链表1(单向无头结点链表基本操作)
线性表分为顺序表和链表,前面说过顺序表,这里说链表。链表:一种链式存储的线性表,用一组地址任意的存储单元存放线性表的数据元素,称存储单元为一个结点。链表分类从三个方面来分:单向链表、双向链表带环链表、不带环链表带头结点链表、不带头结点链表下面实现一些 单向不带环无头结点链表的基本操作: // 头文件 3 #include<stdio.h> ...
2018-04-08 19:14:05
554
原创 进程间通信_1_管道
首先对进程间通信做一个基本介绍,进程有独立性,独享各种资源,运行期间互不干扰,每个进程的数据都保存在自己的PCB中,但是问题就来了,进程需要相互之间共享传递数据时,例如父子进程,父进程需要子进程的一个处理数据,这个时候就需要进程间的通信。进程通信指的就是在进程间传输数据,实质上就是进行通信的进程(可以是两个进程互相通信,也可以是多个)可以打开同一份资源。提到进程间通信还有几个基本的概念要说: ...
2018-04-07 13:40:50
220
原创 sizeof与strlen
sizeof 和 strlen 的区别:1. sizeof 是运算符,strlen 是函数。2. sizeof 的参数可以是类型,可以是函数。传参时,sizeof 参数不发生降级。 strlen 的参数必须只能是 char* 类型,以 '/0' 为结尾 。传参时,strlen 参数发生降级。数组作为参数时,降为首元素地址。3. sizeof 的返回值是 size_t 类型,返回一个变量或类型...
2018-04-02 17:41:40
193
原创 进程的基本概念
这里总结一下进程相关的基本概念。操作系统在计算机中担当着管家的身份,管理着计算机的软、硬件资源,当程序被加载到内存上变成进程时,操作系统就会为进程的运行做一系列准备工作,操作系统是如何管理进程呢?有两个重要的步骤:1.描述进程 2.组织进程1.描述进程: 进程的信息被放在一个数据结构(进程控制块)中,可以将这个数据结构看做进程属性的集合,简称PCB(Process Control Block...
2018-03-28 17:58:38
275
原创 数据结构_顺序表的基本操作(c)
线性表是最常用且最简单的一种数据结构,因此线性表的学习很重要。线性表:n(n>=0)个数据元素组成的一个有限序列,可以再其任意位置上进行插入和删除操作的线性数据结构,从数据在物理内存存储形式上线性表可分为:顺序表和链表。顺序表用一段地址连续的存储单元依次存储数据元素的线性结构,它具有随机访问内存的能力,在C语言中,一般可以用一维数组来表示线性表。数组有静态数组和动态数组之分,所以顺序表分为静...
2018-03-27 23:15:51
653
原创 C语言基础简单操作符小结
Part 1 算术操作符 + - * / % (1) +c = a+b; // a=2 ,b=3 ,c=5 // a=2.0 ,b=3.0 ,c=5.0(2) -c = a-b; // a=5 ,b=1 ,c=4 ...
2017-11-17 14:55:07
650
原创 一个简单程序的小优化
记录一个今天学到的简单小知识(编译环境 VS 2008 )// 求100到200间的素数1、方法一 使用逻辑思路算int main (){ int i=0; int count=0; //记个数,对比结果 for(i=100;i<=200;i++) { int j=0; for(j=2;j<=i-1;j++) ...
2017-11-05 11:41:10
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人