自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux网络编程

1、协议栈Linux的优点之一就是在于它丰富而稳定的网络协议栈,其范围是从协议无关层(如通用的socket层接口和设备层)到各种网络协议的实现;对于网络理论介绍一般采用OSI模型,但是Linux中网络栈的介绍一般分为四层的Internet模型2、网络模型3、TCP/IP协议族体系结构4、数据封装应用程序数据在发送到屋里网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层协议的基础上加上自己...

2018-03-02 23:19:18 245

原创 多线程编程

1、线程概述2、多线程的优缺点3、多线程的实现4、线程属性5、线程同步机制

2018-02-28 23:41:57 166

原创 准确的选择比盲目的努力更重要!

调试程序要有逻辑和耐心,先仔细分析可能的原因,在针对这些原因调试,盲目的调试并不能提高效率出错项目:停车场出错程序:定义出队操作函数时忽略了头结点的存在,使得函数结束后头结点指针指向的是出队的节点信息,在下一次调用此函数时头指针指向的不是队列的头结点,而是前一个出队的节点使得在另外一个函数中两个节点形成环状链表;int LeaveQueue(Queue *q, Node **tmp)//离开等候队...

2018-02-27 21:22:08 885

原创 Linux文件编程--进程控制编程

进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元1、进程与程序程序是放到磁盘的可执行文件,进程是指程序执行的实例;进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序可长久保存进程与程序组成不同:进程的组成包括程序、数据和进程控制块(...

2018-02-26 22:52:52 189

原创 Linux 文件编程--Linux系统调用及用户编程接口(API)和文件描述符

1、系统调用所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务    由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。    因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户...

2018-02-25 23:09:25 650

原创 二叉数

二叉树定义:二叉树(Binary Tree)是n(n>=0)个节点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两颗互不相交的、分别称为根节点的左子树、右子树的二叉树组成。五种基本形态:空二叉树、只有一个根节点、根节点只有左子树、根节点只有右子树、根节点既有左子树又有右子树。二叉树的特点1.每个节点最多有两棵子树,即不存在度大于2的节点。2.左子树和右子树是有序的,不能随便...

2018-02-09 23:15:25 893

原创 数据结构——树

1、树的定义:树(Tree)是n(n>=0)个节点的有限集。n= 0 时称为空树。在任意一颗非空树中:(1) 有且仅有一个特定的称为根(Root)的节点;(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、....、Tm,其中每一个集合本身又是一棵树,并且称为树的子树(SubTree)。 2、节点分类:节点拥有的的子树数称为节点的度。度为0的称为终端节点或者...

2018-02-08 21:35:05 178

原创 数据结构—队列

队列(quence)是只允许在前端(front)进行插入操作,而在另一端尾端(rear)进行删除操作的线性表。队列是一种先进先出(First  in First out)的线性表,简称FIFO。队列分为顺序队列和循环队列。顺序队列:每次插入,指针rear加一,每次删除,指针front加一;循环队列:初始化时,rear = front=0,当队列不为空时,front指向队列中的第一个元素,rear指...

2018-02-07 22:56:05 199

原创 栈的应用——四则运算表达式求值

后缀(逆波兰)表示法定义:一种不需要括号的后缀表达法,我们把它称为逆波兰(Reverse Polish Notation ,RPN )表示。像“9+(3-1)*3+10/2”用后缀表示法应该是“9 3 1 - 3 * + 10 2 / +”,之所以叫后缀表达式就是因为所有的符号都是在运算数字的后面出现后缀表达式转中缀表达式: 从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,

2018-02-06 23:25:03 610

原创 C语言标准定义的32个关键字

C语言标准定定义的32个关键字关键字意义auto声明自动变量,缺省时编译器一般默认autoint声明整形变量double声明双精度变量long声明长整型变量char声明字符型变量float声明浮点型变量short声明短整型变量signed声明有符号

2018-02-05 22:30:31 1489

原创 利用线性链表实现 初始化、插入数据、查看数据、删除数据、链表逆序、清除和销毁数据链表的功能

TestLinkList.c文件#include #include "LinkList.h"void visit(DataType e){ printf("%d ", e);}int Equal(DataType a, DataType b){ return (a == b) ? 1 : 0;}int main(){ int ret, i, p; Link f

2018-02-04 23:26:39 405

转载 线性表,线性表和链表的区别

线性表,线性表和链表的区别存储类别顺序存储结构单链表存储分配方式用一段连续的存储单元依次存储线性表的数据元素采用链式存储结构,用一组任意的存储单元存放线性表的元素时间性能查找O(1)、插入和删除O(n)查找O(n)、插入和删除O(1)空间性能需要预分配存储

2018-02-04 00:04:25 297

原创 通过结构体指针实现顺序链表的基础操作

SequenceList.c文件,主要为main函数,操作步骤#include #include "SequenceList.h"#include /* 初始化顺序表 参数:指向顺序表结构体的指针*/int InitSequence(List **l){ (*l) = (List *)malloc(sizeof(List) * 1); if (NULL == *l) {

2018-02-03 00:27:00 699

原创 C语言分配内存的方式有哪些?C语言中常见的内存错误有哪些?怎样预防

一、内存分配方式内存分配方式有三种:1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,例如全局变量,static变量。2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈内存分配运算内置于处理器的指令集中,效率很高,凡是分配的内存容量有限。3、从堆上分配。也称动态内存分配。程序在

2018-02-01 20:43:21 1398

原创 用结构体编写简单功能的电话簿

/*****************************************************电话簿*****************************************************/#include #include #include int count= 0;int del[100];struct infomation //定义电话簿内容

2018-02-01 00:02:36 711

原创 结构和其他数据形式

C的结构提供了在同一对象中存储几个通常是不同类型的数据项的方法。可以使用标记来代表一个具体的结构模板,并声明该结构类型的变量。成员(.)运算符使您可以通过使用结构模板中的标签来访问结构的各个成员。如果有一个指向结构的指针,可以使用该指针及间接成员运算符(->)代替名字和点运算符来访问结构体的各个成员。要得到结构体的地址,可以使用运算符&。与数组不同,结构名不是结构的的地址。传统上,和结构有

2018-01-30 23:00:19 210

原创 函数

函数(Function)是一段可以重复使用的代码,这是从整体上对函数的认识。C语言本身带了很多库函数,并分门别类地放在了不同的头文件中,使用时只要引入对应的头文件即可。除了C语言自带的函数,我们也可以编写自己的函数,称为自定义函数(User-Defined Function)。自定义函数和库函数没有本质的区别,表现形式和使用方法一样,只是开发者不同而已。参数 函数的一个明显特征就是

2018-01-30 00:05:39 191

原创 指针在C语言中的应用

指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量成为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数、以及其他指针变量的地址。程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,他们丢失地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址

2018-01-29 00:25:20 290

原创 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,例如输入“I am a student”,输出“student a am I”解题思路:定义一个字符型数组str[],内为原英文句子,定义一个字符型数组str1[],为重组后的英文句子。先求出英文句子的长度,利用for循环从元英文句子末尾向句首寻找空格符,当寻找到空格符时就将此个空格符前面一个英文单词复制到str1[]中,直

2018-01-28 00:14:19 7165 1

原创 从1到n这n个整数的十进制表示中1出现的次数

今天遇到一个题目,求1到n个整数中1出现的次数,这是以前写过的题目#include #include int main(){ int i,uint,tens,round; int sum = 0; printf("输入整数n:"); scanf("%d",&tens); for(i=1;i<tens+1;i++) { round=i; while(round>0)

2018-01-26 22:17:07 515

原创 冒泡排序法

冒泡排序是相邻的两个数进行比较,每次把最大的或最小的放到后面,直到结束。#include int main(){ int maopaoSort(int * sort, int x) { int i, j; int flag = 1; for (i = 0; i < x - 1; i++) { if (flag == 0) {   

2018-01-24 22:14:47 108

原创 shell脚本基础 (续)

上篇文章我们说了shell基本元素、创建、执行、一些基本的命令和几种变量类型,这篇文章我们继续介绍shell脚本基础。边境表达式是我们在shell编程中经常使用的,主要有命令替换、条件判断命令、文件测试、字符串测试和其他参数。命令替换主要有三个:在在单个命令行中使用多个命令的一个方法是通过命令替换;expr命令是用于求值算术表达式、可以在$((...))z中包括以表达式来计算它的值。条件判断命

2018-01-23 22:29:13 130

原创 shell脚本基础

什么是shell脚本?如果你有一系列经常使用的Linux命令,你可以把他们存储在一个文件中。Shell可以读取这个文件并执行其中的命令,这样的文件本称为脚本文件。 首先需要创建和执行shell脚本,用任何编辑器如vi在文本文件中编写脚本,以.sh为后缀保存文件,并将文件赋予可执行的权限。然后就可以执行脚本命令。执行脚本命令有下面两种方式:1)bash脚本文件 2)./脚本文件 在脚本编

2018-01-23 00:00:26 637

空空如也

空空如也

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

TA关注的人

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