- 博客(35)
- 收藏
- 关注
原创 Linux的进程间通信
现在Linux使用的进程间通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信号(signal)3、消息队列4、共享内存5、信号量6、套接字(socket)管道通信管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。 一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。管道提供了简单的流控制机制...
2018-08-19 11:22:15
267
原创 Linux的进程控制的初步学习
定义:进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;程序是放到磁盘的可执行文件 进程是指程序执行的实例进程和程序的区别:进程是动态的,程序是静态的;进程是暂时的,程序使长久的;进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多...
2018-08-15 20:59:20
231
原创 将结构体数据保存写入到文件中
利用系统接口,将结构体数据写入到文件中。/*********************************** File Name: copy.c Author: Lifengyu Created Time: 2018.8.13 ***********************************/#include <stdio.h>#include &...
2018-08-13 20:53:08
10345
1
原创 七大排序的源代码
插入排序#include <stdio.h>int Insertsort(int b[], int n){ int i, j; int tmp; for(i = 1; i < n; i++) { tmp = b[i]; for(j = i - 1; j >= 0; j--)...
2018-08-12 20:56:36
233
原创 利用链式队列输出杨辉三角形和算法输出杨辉三角形
链式队列头文件#ifndef _SEQUENCEQUEUE_H#define _SEQUENCEQUEUE_H#include <stdio.h>#include <stdlib.h>#define SIZE 1000#define SUCCESS 10000#define FAILURE 10001#define TRUE ...
2018-08-10 20:29:58
1704
原创 关于二叉树的三种遍历方式
首先我们定义了一个结构体 node,结构体内有用来存放数据的data和指针 left 和 right 。struct node{ int data; struct node * rigth, *left;};typedef struct node TreeNode; 定义完结构体后,先定义一个数组,用来存放结点内容,那我们就要先创建这么多的结点。TreeNode *...
2018-08-10 20:05:19
167
原创 数据结构——队列
队列:队列是特殊的线性表。队列的抽象数据模型: 1)初始化操作,建立一个空队列Q; 2)若队列存在,则销毁它; 3)将队列清空;4)若队列Q为空,返回true,否则返回false; 5)若队列Q存在且非空,用e返回队列Q的队头元素;6)若队列Q存在,插入新元素e到队列Q中,并成功称为队尾元素; 7)删除队列Q中队头元素,并用e返...
2018-08-08 21:23:04
181
原创 完成中缀表达式转后缀表达式的计算器——利用链式栈代码
逆波兰表达式:逆波兰表达式又叫做后缀表达式。逆波兰表达式是一种十分有用的表达式,它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。Sample:a+b ---> a,b,+a+(b-c)*d ---> a,b,c,-,d,*,+a+d*(b-c)--->a,d,b,c,-,*,+ 转换思路:在表达式中的转换规则操作数 :进栈...
2018-08-08 20:55:36
425
原创 数据结构之——关于单链表的头插法和尾插法的代码和思路
头插法思路:每次插入都在第一个节点之前,头结点之后,那每次插入时的赋值就只要将头结点的地址赋给插入的节点,然后将插入的节点的地址依次给后面节点就可以了。1、定义一个要插入的节点q2、q->data内给值e3、q->next = p->next;建立后续节点。4、p->next = q;建立前驱节点。int FirstInsert(Node *l,...
2018-08-07 21:14:15
815
原创 顺序表与链表的比较!
基于空间的比较:存储分配的方式 :顺序表的存储空间是静态分配的 链表的存储空间是动态分配的存储密度 = 结点数据本身所占的存储量/结点结构所占的存储总量 :顺序表的存储密度 = 1 ;链表的存储密度 < 1。基于时间的比较:存取方式 :顺序表可以随机存取,也可以顺序存取 链表是顺序存取的插入/删除时移动元素个数 :顺序表平均需要移动近一半元素 链表不...
2018-08-06 19:50:20
606
原创 数据结构之——栈
栈:栈是一个特殊的线性表,只能在一端操作。栈的操作遵循“先进后出(后进先出)”原则! 空栈:不含任何数据元素的栈,top=-1;栈中有一个元素时,top=0;栈的抽象数据类型:插入和删除:push,pop 同线性表。 元素具有相同的类型,相邻元素具有前驱和后继的的关系。 操作:初始化操作,建立空栈S; 若栈存在,就销毁它; 将栈清空; ...
2018-08-06 19:34:49
156
原创 用链表实现通讯录的基本功能
头文件#ifndef _ADL_LINKLIST_H#define _ADL_LINKLIST_H#define N 20#define M 100#define FAILURE 10001#define SUCCESS 10002/*颜色管理*/#define NONE "\033[m" #define RED "\033[0;3...
2018-08-06 19:24:36
380
1
原创 关于单链表的简单操作代码
头文件#ifndef _LINKLIST1_H#define _LINKLIST1_H#define FAILURE 10000#define SUCCESS 10001#define TRUE 10002#define FALSE 10003typedef int Elemtype;struct node{ Elemtype data; //数据域 s...
2018-08-04 21:30:37
233
原创 利用顺序表写一个插入排序的功能
头文件#ifndef _SEQUENCELIST_H#define _SEQUENCELIST_H#define SIZE 20#define SUCCESS 10000 #define FAILURE 100001typedef int Elemtype;struct Sequencelist{ int length; //数据域 E...
2018-08-03 21:13:00
787
原创 关于顺序表—线性表的基础操作代码
头文件#ifndef _SEQUENCELIST_H#define _SEQUENCELIST_H#define SIZE 10#define SUCCESS 10000 #define FAILURE 100001#define TRUE 100002#define FALSE 100003typedef int Elemtype;struct Sequencel...
2018-08-02 20:57:11
423
原创 用指针重新写strcpy、strcmp、strlen函数
利用指针运算实现库函数中的strcpy#include<stdio.h> char *mystrcpy(char *str, const char *ptr){ char *tmp = str; while((*str++ = *ptr++) != '\0');// 先执行*str = *ptr 再++; return tmp;//返回值...
2018-08-01 16:25:13
749
原创 在Linux下,通过printf函数改变输出字符的颜色。
在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。例如下图就可以增加界面的美观性。 printf(YELLOW"*********************************\n"NONE); printf(GREEN"****------------*------------****...
2018-08-01 10:19:57
1427
1
原创 关于结构体的一点小知识
结构体和链表用结构体建立链表 :struct student{ int num; float score; struct student *next ;};其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型)。共同体使几个不同的...
2018-08-01 09:14:24
304
原创 typedef 的使用方法详解、goto语句的使用方法。
typedef C语言支持一*种叫作typedef的机制,它允许你为各种数据类型定义新名字。typedef 声明的写法和普通的声明基本相同,只是把typedef这个关键字出现在声明的前面。例如,下面这个声明:char *ptr_ to_ char;把变量ptr_ to_ char 声明为-一个指向字符的指针。但是,在你添加关键字typedef后,声明变为:typedef ...
2018-07-30 17:25:46
259
原创 判断大小端字节序的方法代码
字节序1、大端字节序:高字节存放在低地址,低字节存放在高地址。2、小端字节序:高字节存放在高地址,高字节存放在低地址。★:字节序由计算机决定,可以用代码查询。#include <stdio.h>union test{ short val; char array[2];};int main(){ union test t; t.val ...
2018-07-29 22:41:40
551
原创 const 修饰变量的含义、结构体格式和内存存储和内存动态分配
const 具体使用!1,const int p; //是一个常整型数,只读变量,不能通过p修改对应内存里的值2,int const p; //同上,int 和 const 相邻时位置可互换 常整型数3,int const *p; //去掉类型int, const修饰*p, (*p)++不可以,p所指向空间的值不可以改变,p++是对的,p指针可以后移...
2018-07-29 22:32:50
1529
1
原创 一题整数算法问题和三题字符串问题!
整数算法1、输入5个数(含负数、小数)将它们按由小到大的顺序排列起来。#include<stdio.h>#include<stdlib.h>int main(int argc, char *argv[]){ int i, j; float a[30]; float tmp = 0.0; for(i = 1; i <...
2018-07-28 20:17:14
145
原创 当指针和函数、数组在一起了,那么可怕的事情就发生了!
函数与指针函数指针变量定义的一般形式为: 类型说明符 (*指针变量名)(); 例如:int (*pf)();表示一个pf指针是一个指向函数的指针变量,该函数的返回值是整型。(*p)的两边的括号不能少。定义指针型函数的一般形式为: 类型说明符 *函数名(形参表) { ...
2018-07-27 21:06:59
143
原创 利用C语言中数组和结构体,初步完成通讯录功能
概括:用结构体和数组,实现通讯录功能。目前完成六个基础功能:添加、查看、删除、查找、修改、排序。若有好的建议或意见,欢迎留言!#include<stdio.h>#include<string.h>#include<stdlib.h> #define N 15#define M 100 void showscreen();voi...
2018-07-26 20:43:35
781
1
原创 C语言中指针的初步认知
指针是什么?指针是变量的一种,所有类型的指针长度都是4个字节。&是取地址运算符,*是指针运算符。 所以:&a === 0x1000x100 0x101 0x102 0x103 ...
2018-07-25 21:22:02
198
原创 宏定义函数与自定义函数的区别
宏定义函数:宏定义函数可以分为无参数宏函数和有参数宏函数。无参数宏函数:#define OUT printf("helloworld!\n")int main(){ OUT; return 0;}输出结果:helloworld!有参数宏函数:#define P(s) printf("%s\n", s)int main(){ P("abc...
2018-07-25 19:16:04
752
原创 C语言中printf内输出加“\n”的作用
一般我们编程,在输出语句printf中通常在输出语句结束时,加上“\n”,那么,这个“\n”的作用是什么呢?“\n”起刷新缓冲区的作用。例:我们定义一个元素为1-5的数组a,用for循环让a顺序输出元素。#include<stdio.h>int main(){ char a[5] = { 1, 2, 3, 4, 5}; int i; ...
2018-07-25 19:02:36
30089
10
原创 关于整数算法题目的编程
1、题目:通过编程实现,统计1~n有多少个9 (提示:n通过参数传入int)#include<stdio.h>int main(){ int n, m; int i, j; int count=0; printf("输入一个n值:\n"); scanf("%d", &n); for(i = 1; i <= ...
2018-07-24 20:16:49
303
原创 对于C语言中函数的初步学习
自定义函数:格式:函数类型 函数名(形式参数类型说明表) { 声明部分 执行部分 } 函数调用的形式:(1)作为函数语句调用。函数一般无返回值。例: printf(“Hello,World!\n”);(2)作为函数表达式调用。例: m=max(a,b)*2;...
2018-07-23 21:25:24
744
原创 对于C语言中的数组的学习
一维数组:格式:类型说明符 数组名 【常量表达式】 ; 例如: int a 【10】;它表示定义了一个整形数组,数组名为a,有10个元素。★:不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。错误示例: 1、float a[0]; 数组大小为0没有意义 2、int b(2)(3); ...
2018-07-23 21:00:29
901
1
原创 理解C语言算法的实现,以三道题目为例
#include<stdio.h>int main(){ long i; int j; printf("Please input number:"); scanf("%ld",&i); for(j=999;j>=100;j--) { if(i % j == 0) ...
2018-07-22 21:24:06
183
原创 C语言的基本数据类型和运算符表达式
内容:1、C语言中的基本数据类型 2、运算符与表达式 3、控制结构 4、循环语句数据类型: 类型 字节大小 位数 表示范围(有/无) int 4 32 float 4 32 double 8 64 ...
2018-07-21 21:08:49
362
原创 Linux下的gdb调试工具和shell脚本的接触
内容:1、gdb调试工具的学习。gdb是gun的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。当程序暂停执行时,可以使用命令查看程序中的变量值、CPU的寄存器值、内存的值以及函数调用栈等信息。调试步骤:用-g参数将调试信息编入目标文件xx中 gcc -g xx.c -o xx用命令启动对程序app的调试: gdb xx若程序xx运行时需要参数,则用以下...
2018-07-20 20:01:12
1534
原创 在虚拟机下Linux操作系统的命令
内容:1、vim编辑的三种模式。 2、gcc编译器的指令学习。 3、makefile工程管理器的基础学习。Linux常用命令:1、用户管理类命令:useradd;usedel;passwd;su;groupadd; groupdel2、文件目录类命令: ls;cd;touch;cp;mv;rm;chmod; mkdir;du;pwd...
2018-07-19 20:17:32
319
原创 Liunx的常用指令的学习
内容:对于Liunx的常用指令的学习,文件处理命令和安全管理命令各5个。文件处理命令:file、find、dd、diff、cat。系统安全相关命令:umask、chgrp、passwd、chattr、sudo。 文件处理命令: ★ file: ...
2018-07-19 09:35:43
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人