自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 关于sizeof/strlen、char */char []

char *s1 = "hello"; char s2[] = "hello"; //char s2[5] = "hello"; //这里会报错,因为s2末尾还有一个'\0'结束符,字符数组长度少1; string st = "hello"; //st存在栈中,"hello"可以经由st修改; cout << "sizeof s1:" <<

2017-03-29 18:11:37 526

原创 二叉树前序、中序、后序非递归遍历

我们知道二叉树的递归遍历写起来很简单,但是稍微不太容易理解。为了更好地理解二叉树的遍历过程,这里用栈来模拟递归的步进步出。#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

2017-02-15 16:10:53 394

原创 二叉树非递归遍历

#include#include#include#include#include #include#include using namespace std;typedef struct BinaryTree{ char val; struct BinaryTree *left; struct BinaryTree *right;}BinaryTree,*BitTree

2016-07-19 11:28:30 483

原创 二叉树的建立和基础操作<三> —— (三种遍历及分层打印)

#include#include#include#include #include#include using namespace std;typedef struct BinaryTree{char val;struct  BinaryTree *left;struct  BinaryTree *right;}BinaryTree,*BitTree

2016-07-18 21:57:22 553

原创 二叉树的建立和基础操作<二> —— (层次遍历和计算二叉树的宽度)

考研进行时——二叉树的层次遍历和计算二叉树的宽度/**********************先序建立二叉树; 利用C++中的队列实现二叉树的层次遍历;Width()函数返回二叉树的宽度 *************************************************/#include#include #include#includeusing namesp

2015-07-12 22:25:44 1722 2

原创 二叉树的建立和基本操作<一>

好久没有写博客了,期末考试和课程设计让我似乎快忘记了我是一名考研党,最近事情都弄完了,可以安心准备考研了。考研进行时——二叉树的。#include#includetypedef char ElemType;typedef struct BT{ ElemType data; struct BT *lch,*rch;}BT;BT * CreateBT();

2015-07-08 22:57:54 745

转载 Linux内核空间与用户空间极其信息交互

linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。  Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较低的

2015-06-19 18:15:45 2135

原创 归并排序和快速排序

考研进行时——排序。最近看到递归,感觉递归很神奇。然后听到说排序是数据结构中很重要的考点。先从归并排序和快速排序开始,因为他们都用到了递归的概念以后还会实现其他的排序算法。#include#includevoid quicksort(int a[],int l,int r) //快速排序{ int i=l,j=r,t=a[l]; if(l<r) { w

2015-04-08 19:44:56 412

原创 栈的基本操作

考研进行时——严蔚敏书中栈的基础部分。#include#include#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int ElemType; typedef struct _stack { int sstacksize; int* base; int* top; }sqStack;

2015-04-04 23:02:12 404

原创 合并有序单链表

考研进行时——今天的任务是完成两个有序单链表的合并。不多说,贴代码:#include#includetypedef struct LNode{int data;struct LNode *next; //指针域}*LNode;/*LNode HeadCreatList (LNode L) //头插法建立链表{ LNode s; int i; L->next=NULL;

2015-04-04 13:23:24 512

原创 单链表基本操作

最近在准备考研,专业课方面首先开始了数据结构的复习,用的严奶奶的书,看了单链表的一节后,觉得有必要将单链表的基本操作具体实现,便于加深理解。#include#include#includetypedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkLi

2015-03-30 19:55:35 666

原创 操作字符串中的数字序列

一、编程找出一个字符串中最长的数字字符串,打印该数字串及长度#include#includeint main(){ int i,stlen; int numlen=0,numax=0; int k; char st[30]; //假定输入的字符串长度不超过30 scanf("%s",st); stlen=strlen(st);

2015-03-24 22:27:03 604

原创 递归函数执行顺序

最近看了一些递归的例子,发现调用递归之前的语句和递归之后的语句执行顺序是正好相反的,这是给我的最大感受,具体看如下例子/*递归例子*/#includevoid up_and_down(int);int main(void){ up_and_down(1); return 0;}void up_and_down(int n){printf("Level %d:n l

2015-03-24 22:08:43 4422

原创 嵌入式BootLoader原理及实例 <一>

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的

2014-12-24 06:36:51 1962

原创 linux静态库与动态库制作

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 一、静态库和动态库的区别1. 静态函数库这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大--空间,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为

2014-12-24 04:42:39 752

原创 网络结构参考模型

OSI参考模型       OSI是Open SystemInterconnect的缩写,意为开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的

2014-12-23 05:42:01 714

原创 Makefile制作基础

在讨论Makefile文件时,首先需要了解以下的一些知识:一、 C语言编译过程C语言的编译过程可分为四个阶段:1、预处理(Preprocessing)对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。伪指令包括:1)宏定义指令;      2)条件编译指令;      3)头文件包含指令;2、编译(Compilation)编译就是将源程序转换为计算

2014-12-23 05:25:08 572

原创 构造函数和析构函数 <三>

/****** 1.构造函数初始化列表******/#includeusing namespace std;class Test{public: Test():p(new int[size]),size(10)//初始化列表初始化变量size和指针p,注意顺序 { cout<<"new obj creat succes!"<<endl; for(int i=

2014-12-20 11:35:29 542

原创 构造函数和析构函数 <二>

//******‘=’作为赋值运算符创建对象时调用转换构造函数*****#includeusing namespace std;class Test{public: Test(int nu)//带参数的构造函数 { num=nu; cout<<"Call Test(**) success!"<<endl; cout<<"nu

2014-12-19 20:20:27 545

原创 数据结构小知识

卡片游戏:         桌上有一叠纸牌,从第一张牌(即位于顶端的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行一下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。         输入n,输出每次扔掉的牌,以及最后剩下的牌。         样例输入:9         样例输出:1 3 5 7 9 4 8 6 2通过这个例子可以演示C++中队列的机制

2014-12-19 17:35:48 608

原创 构造函数和析构函数 <一>

构造函数是类的一种特殊成员函数。当创建一个类类型的对象时,系统会默认调用构造函数。在C++中,在类中定义的函数,都是可以抽象成一种方法。于是构造函数也是为类的对象服务的一种方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。构造函数的

2014-12-18 20:04:02 675

原创 关于堆栈的详解

在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。         堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。         要点:         堆,列队优先,先进先出。         栈,先进后出(First-In/Last-Out)。         栈(操作系统): 在函数调用时,在大多数的C编译器中,

2014-12-18 15:15:18 831

原创 malloc()、free()函数详解

一直以来对malloc()函数和free()函数都只是会用而已,而并未尝试去理解其深刻的内涵,今天就写写自己的一些认识,有很多也是自己刚刚学到的。 malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。原型         externvoid *malloc(unsigned int

2014-12-18 14:34:16 5571

原创 Linux多线程编程—初步

linux多线程设计是指基于Linux操作系统下的多线程设计,包括多任务程序的设计,并发程序设计,网络程序设数据共享等。Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知道,在Linux系统下,

2014-12-14 12:11:53 677

原创 Linux多进程编程—初步

什么是一个进程?进程这个概念是针对系统而不是针对用户的,对用户来说,他面对的概念是程序。当用户敲入命令执行一个程序的时候,对系统而言,它将启动一个进程。但和程序不同的是,在这个进程中,系统可能需要再启动一个或多个进程来完成独立的多个任务。多进程编程的主要内容包括进程控制和进程间通信,在了解这些之前,我们先要简单知道进程的结构。1. Linux下进程的结构 Linux下一个进程在内存里有三部

2014-12-14 06:36:37 725

原创 《C++ Prime Plus 第八章》——内联函数

内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中。要了解内联函数与常规函数之间的区别,必须深入到程序内部。         编译过程的最终产物是可执行的程序——由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令。有时(如有

2014-12-14 00:28:27 812

原创 杭电2037

杭电2037http://acm.hdu.edu.cn/showproblem.php?pid=2037今年暑假不ACTime Limit:2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29958 Accepted Submission(s): 158

2014-12-13 05:44:10 681

原创 杭电1021

杭电1021http://acm.hdu.edu.cn/showproblem.php?pid=1021FibonacciAgainTime Limit:2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 39152 Accepted Submission(

2014-12-13 05:24:39 625

原创 杭电1020

杭电1020—简单字符串处理http://acm.hdu.edu.cn/showproblem.php?pid=1020EncodingTime Limit:2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28085 Accepted Submissio

2014-12-13 05:13:09 618

原创 杭电1014

杭电1014—判断两个数互质http://acm.hdu.edu.cn/showproblem.php?pid=1014Uniform GeneratorTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K(Java/Others)Total Submission(s): 18468 Accepted

2014-12-12 12:04:46 705

原创 杭电1018

杭电1018—大数阶乘位数计算http://acm.hdu.edu.cn/showproblem.php?pid=1018Big NumberTime Limit: 2000/1000 MS(Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s):17850    Accepted S

2014-12-12 07:42:04 842

原创 《C++ Prime Plus 第七章》—函数指针

函数指针         与数据项类似,函数也有地址。函数的地址是存储其机器语言代码的内存的开始地址。通常,这样地址对用户而言是透明的,但对操作系统而言却是很有用的。例如,可以编写将另一个函数的地址作为参数的函数。这样第一个函数就能够找到第二个函数并执行所需的操作。函数地址作为参数传递,实现了在不同时间使用不能函数,可以像对待普通变量一样使用函数。         首先通过一个例子来阐述这

2014-12-10 22:45:13 810

转载 杭电DP题库及解题思路

Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);正

2014-12-10 01:14:30 722

原创 《C++ Prime Plus 第七章》—指针和const

常量指针和指针常量这两个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。在C/C++中,常量指针是这样声明的:1)const  int  

2014-12-09 22:38:12 700

原创 C++高精度算法—大数加大数,大数乘以小数

一次偶然的机会,看到百度面试题中出现了很多关于处理大数据的处理题目,也称作高精度题目,另外在ACM竞赛中也偶尔会碰到。我们知道在C语言或C++语言中,通常受机器字长的限制,我们会碰到如果某个整数的范围超过一个范围就没法运算。这时我们只能先用字符串读进去,然后再将字符型的“数”转换成数值的“数”,再模拟手算,一位一位相加,最后得到结果。        具体请看下面的例子:#include

2014-12-09 06:29:59 3839

原创 《C++ Prime Plus 第七章》—函数和结构体初识

为数组编写函数是我们一直讨论的话题,但为结构编写函数比为数组编写函数还要简单。虽然结构变量和数组一样,都可以存储多个数据项,但在涉及到函数时,结构变量的行为更接近于基本的单值变量。也就是说,与数组不同,结构将其数据组合成单个实体或数据对象,该实体被视为一个整体。请看下面的例子:有些地图指出,从福州到厦门需要3小时50分钟,而从厦门到福州需要1小时25分钟。对于这种时间,可以使用结构来表示——一

2014-12-08 01:18:53 856

原创 《C++ Prime Plus 第七章》—数组、函数、指针初步

我们经常会看到将一维数组的名字,即数组首地址作为参数传入函数,从而实现对数组进行一些简单操作,比如数组的求和;此外我们还有另一种给函数提供所需信息的方法,即指定元素区间,这可以通过传递两个指针来完成:一个指针标识数组的开头,另一个指针标识数组的尾部。将区间传递给函数将告诉函数应当处理那些元素,这样处理数组将更加灵活。例如给出下例:#include //#includeusing nam

2014-12-08 00:37:31 687

原创 《现代操作系统—中文第三版》读书笔记之——调度算法

第二章 进程与线程2.41非抢占式算法:挑选一个进程,然后让该进程运行直至被阻塞,或者让该进程自动释放CPU。即使该进程运行了很长一段时间,也不会被强制挂起。在批处理系统中该算法广为适用,减少了进程的切换,改善了性能。2强占式算法:挑选一个进程,并且让该进程运行某个固定时段的最大值;如果在该时段结束时该进程仍在运行,它就被挂起,由调度程序挑选另一个进程运行。交互式系统中普遍适用。

2014-12-07 02:12:12 1273

汇编指令大全

汇编指令是汇编语言中使用的一些操作符和助记符 还包括一些伪指令 如assume end 用于告诉汇编程序如何进行汇编的指令 它既不控制机器的操作也不被汇编成机器代码 只能为汇编程序所识别并指导汇编如何进行

2015-01-08

空空如也

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

TA关注的人

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