自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单链表的基本操作

头文件:#define _CTR_SECURE_NO_WARNINGS 1#ifndef _SEQLIST__H_#define _SEQLIST__H_#include<assert.h>#include<stdlib.h>#include<stddef.h>#include<stdio.h>typedef int DataType;typedef struct Node{ D

2017-04-24 12:03:42 287

原创 静态顺序表的基本操作

头文件:#define _CRT_SECURE_NO_WARNINGS 1#ifndef _STATICSEQLIST_H__#define _STATICSEQLIST_H__#include<stddef.h>#include<assert.h>#include<string.h>#define MAXSIZE 10typedef int DataType;//#define Dat

2017-04-24 11:53:53 186

原创 动态顺序表(可扩容)的基本操作

头文件:#define _CRT_SECURE_NO_WARNINGS 1#ifndef _STATICSEQLIST_H__#define _STATICSEQLIST_H__#include<stddef.h>#include<assert.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#define MAXSIZE 1

2017-04-24 11:50:49 1437

原创 小型迷宫实现---迷宫算法(递归回溯法)

首先我们来了解迷宫包含的算法—-回溯法 回溯法的基本思想: 对一个包括有很多个结点,每个结点有若干个搜索分支的问题,把原问题分解为若干个子问题求解的算法;当搜索到某个结点发现无法再继续搜索下去时,就让搜索过程回溯(回退)到该节点的前一个结点,继续搜索该节点外的其他尚未搜索的分支;如果发现该结点无法再搜索下去,就让搜索过程回溯到这个结点的前一结点继续这样的搜索过程;这样的搜索过程一致进行到搜索到问

2017-04-24 11:14:30 18068

原创 信号---信号的阻塞

一、信号在内核中的表示 1.首先我们来了解几个基本的概念信号的递达(Delivery):实际执行信号的三种处理动作;信号的未决(pending):信号从产生到递达之间的过程;阻塞信号(Block):被阻塞的信号产生时将保持在未决的状态,直到进程解除对此信号的阻塞,才会执行递达动作;2.阻塞和忽略的区别 忽略是信号默认处理动作的一种,即信号的递达,而阻塞是信号未决的状态,只有解除阻

2017-04-23 18:22:57 496

原创 信号---信号的产生

通过我的上篇文章可以了解到信号的基本概念,本篇我们复习总结信号是如何产生,信号的类型和信号如何处理,信号的产生总结起来有三种形式,分别如下:通过终端按键产生信号;通过调用系统函数向进程发送信号;由软件条件产生信号;硬件异常产生的信号;一、通过终端按键产生信号1.我们在前面的信号的基本概念中提到过的ctrl -c产生SINGINT信号、ctrl -\产生SIGQUIT信号、ctrl -z产生

2017-04-23 17:12:36 2892

原创 全排列---非递归实现

全排列的非递归实现算法描述实现全排列的非递归的排列,首先我们要明确排列的顺序,这样我们才会不会漏掉任何一个排列,我们按照从小到大的顺序排列,例如:“1234”的下一个就是“1243”,在下一个就是“1324”……首先,对于给定数列,如果不是一个最小数,如1324,则将它转换为最小数,我们先对它进行排序,保证该数列是所有数字组合数列中值最小,可以用快排,或则库函数qsort(s , n , siz

2017-04-21 23:07:33 667

原创 全排列和去重全排列---递归实现

一、全排列的概念: 根据360百科,我们知道从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。二、全排列的算法:递归实现全排列(存在重复数字交换问题,于是又有了第二种方法)去重全排列非递归实现全排列(循环交换,由小到大)三、接下来我们学习第一种方法—–递归实现全排列算法实现:#include<s

2017-04-21 22:13:04 8636 3

原创 线程安全和可重入函数的基本概念

一、线程安全 1.线程安全的概念(有下面两种说法):如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,(也就是说我们不用考虑同步的问题)。线程安全产生的

2017-04-19 19:46:31 239

原创 算法的复杂度

算法的时间复杂度和空间复杂度统称为算法复杂度。一、算法的时间复杂度概念:时间复杂度就是一个函数,该函数计算的是执行基本操作的次数。时间复杂度的—O渐进表示法 一个算法中语句总的执行次数称为语句的频度或时间频度,记为T(n);n称为时间规模。一般情况下,算法总的执行次数T(n)是n的一个函数f(n),当n不断变化时,时间频度T(n)也会随之不断变化,

2017-04-15 11:16:06 363

原创 判断一个字符串是否回文

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如”level” 、 “aaabbaaa”题目:判断一个字符串是否为回文 解法:递归、循环 循环的方法根据传参的不同,分为两种,如下:循环一bool IsPalindereme(char* str,size_t size){ if(str==NULL || size == 0) return fa

2017-04-10 16:28:45 1021

原创 二分查找----递归实现

在前面我们介绍了二分查找循环的实现二分查找 接下来用递归实现二分查找int BinarySearch(int* array,int left,int right,int data){ int mid = left+((right-left)>>1); if(left <= right) { if(array[mid] == data)

2017-04-10 15:50:50 379

原创 逆向打印单链表

这里我们将介绍逆向打印单链表的三种方法:利用循环以及三个指针,将单链表的_pNext指针的指向改变(这种方法改变了单链表)利用栈的特性“先进后出”来实现,将链表结点的值全部入栈后再依次出栈利用递归来实现给出结点#include<stdio.h>#include<iostream>using namespace std;//单链表typedef struct Node{ Nod

2017-04-10 15:26:12 580

转载 strcpy、memcpy函数的实现

本文转载自:strcpy函数实现 大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:char *my_strcpy(char *dst,const char *src){ assert(dst != NULL); assert(src != NULL); char *ret = dst; while((* dst++ = * src

2017-04-07 20:18:21 372

转载 用C语言实现多态

本文转载自: 用C语言实现多态 多态 (polymorphism) 一词最初来源于希腊语 polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。然而在人们的直观感觉中,多态的含义大约等同于“同一个方法对于不同类型的输入参数均能做出正确的处理过程,并给出人们所期望获得的结果”,也许这正体现了人们对于多态性所能达

2017-04-07 15:27:38 767

原创 读写锁------进程的同步与互斥

读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。这里我们出现了一个新的概念,自旋锁;

2017-04-06 15:00:14 3474 4

原创 信号量------线程的同步与互斥

我们前面介绍了线程的同步与互斥中的互斥锁与条件变量,接下俩我们实现线程的同步与互斥的下一个主题:信号量我们在进程中也学习过信号量信号量—-进程间通信,那个信号量完全可以运用在线程通信上,且信号量是以集合的形式出现,我们实现线程间的互斥所用的信号量是以个数的形式出现,而且实现要比进程间通信的信号量简单的多。信号量的函数接口: 信号量初始化 参数: sem表示我们定义的信号量; pshare

2017-04-06 14:25:21 380

原创 scoed_ptr------防拷贝

防拷贝是用来进行资源管理的第二种方法,第一种是auto_ptr,资源转移auto_ptr,所谓的防拷贝就是不用拷贝构造函数和赋值运算符重载函数;但在类中又不能不写,因为系统会自动合成template<class T>calss scoped_ptr{public: scopedptr(T* ptr) :_ptr(ptr) {} ~scopedptr()

2017-04-04 18:52:33 347

原创 auto_ptr-----智能指针

void FunTest(){ int *p = new int[10]; FILE* fp = fopen("1.txt","rb"); if(fp==NULL) { return;//因为忘记释放p,所以会造成内存的泄漏 } //Dosomething; if(p!=NULL) { delete[]

2017-04-04 18:41:49 273

空空如也

空空如也

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

TA关注的人

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