自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(197)
  • 收藏
  • 关注

原创 栈和队列面试题(一)---一个数组实现两个栈

一,用一个数组实现两个栈(先进后出),有以下几种方法: ①数组的奇数位置存储一个栈的元素,偶数位置存储另一个栈的元素; ②两个栈分别从数组的中间向两头增长; 数组的中间位置看做两个栈的栈底,压栈时栈顶指针分别向两边移动,当任何一边到达数组的起始位置或是数组尾部,则开始扩容 ③两个栈分别从数组的两头开始增长。 将数组的起始位置看作是第一个栈的栈底,将数组的尾部看作第二个栈的栈底, 压栈时,栈顶指针

2017-04-12 22:55:03 3241

原创 二叉树的递归实现(前序,中序,后序,层序,高度,叶子节点数,第k层节点数)

一:二叉树是我们学过最常用也是最基础的数据结构,要想学好二叉树①首先要学会利用含有非法值得数组前序遍历★建立一颗二叉树;②然后我们要会用递归的方式对这颗二叉树进行★前序,★中序,★后序的遍历打印,也要学会利用队列的先进先出的原则对着棵树进行★层序访问;③然后我们还要知道这颗二叉树的基本信息;比如,★二叉树的总节点个数,★二叉树的叶子节点个数,★二叉树的第k层的节点个数,★二叉树的高度(深度); 二

2017-04-12 17:45:14 926 1

原创 非递归实现二叉树的前序,中序,后序遍历打印

前言:前面这篇文章主要是用递归的思想写了一颗二叉树,其中包括前序建树;前序,中序,后序遍历打印,层序遍历(非递归);求高度;求节点数;求叶子节点数;求第k层结点树等;详情请看: 递归实现二叉树的前,中,后序打印在我们了解了最简单的递归遍历以后,现在来说说用栈辅助,非递归实现二叉树的前序,中序,后序遍历打印 一:非递归实现前序遍历打印 1. 前序遍历,访问的顺序为根->左->右; 2. 前

2017-04-12 17:40:08 4749

原创 Linux下实现进度条

1.进度条在生活中很常见,在linux系统中实现一个进度条的程序,感觉还是很有趣的2.首先,进度条的动态是利用人们的视觉效果产生的,其实并不是像我们看到的那样,每次给后增加一个进度条,而是一个覆盖输出的过程;先输出:[=                                               ]表示进度是1%,刷新之后再输出:[==

2017-04-11 11:06:34 459

原创 linux下的粘贴位

1.            通常情况下,我们只要对一个目录有w写的权限就可以删除这个目录下的任何文件或子目录;这样就会造成同一个目录下,如果有多个用户建立的属于自己的文件;任何只要对该目录有w写权限的用户,都可以删除别人在这个目录下建立的属于自己的文件;这样做事很可怕的;       在Linux系统中比较典型的例子就是“/tmp”、“/var/tmp”目录。这两个目录作为Linux系

2017-04-01 23:34:49 1386

原创 llinux中find命令

1.find命令用来在目录结构中搜索文件,并执行指定的操作。在指定目录下查找文件时,任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。2.格式find    pathname    -options      [-print -exec -ok ...]

2017-04-01 22:09:26 392

原创 时间指令stat内容详解

1.stat:用于显示文件的状态信息。        stat命令的输出信息比ls命令的输出信息要更详细2.其中stat的内容项具体含义:Access:文件最近一次的访问时间Modify:文件内容最近一次的修改时间Change:文件属性最近一次的修改时间

2017-04-01 11:27:41 547

原创 细说递归

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边

2017-03-21 23:31:15 260

原创 目录文件的普通权限

(一)当用户要进入一个目录时,需要目录有什么权限?先建立一个目录 code,然后查看到code的目录权限,可以看到该目录中用户权限为wrx(读,写,执行),接下来,我先把该目录中用户权限的r权限去掉,然后再进入目录,可以进入;接着把该目录中用户权限的w(写)权限去掉,也可以进入,然后给该目录中用户权限的加上rw(读,写)权限,把x(执行)权限去掉,发现进不去目录;结论:进入一个目录需要该目

2017-03-21 17:36:37 1262

原创 amp和set

1.map和set是两个主要的关联容器。2.关联容器和顺序容器的区别:(1)关联容器中的元素是按照关键字来保存和访问的;(2)顺序容器中的元素是按照它们在容器中的位置来顺序保存和访问的。 3.map和set的底层都是通过红黑树来实现的,即中序遍历得到的序列是关键字的升序排列。一.set (1)容器中只含有关键字,并且关键字不可以重复。通过以下代码,让我们来具体了解s

2017-02-16 13:42:00 312

原创 用递归和非递归实现斐波拉切数列和二分查找

1.斐波那契数列递归实现#includeusing namespace std;long long* MyFib(size_t n){long long* FibArray=new long long[n+1];FibArray[0]=0;FibArray[1]=1;for(size_t idx=2;idx{FibArray[idx]=Fib

2016-12-01 01:17:48 1228

原创 理解 assert()断言

头文件:assert.hassert即断言,也即做出一些假设,程序运行时如果假设不成立,程序就会中断。没有很多调试经验,可能不太理解断言在哪会用到,实际上我们在调试一个出错的程序时,由于程序出错的位置往往不是错误起因的位置,我们需要追溯错误的起源,就需要在前方的一定位置确保某个变量的值符合一定的条件。 比如VS有局部数组变量越界访问检查机制,如果函数中的数组被越界访问,在函数结束时会报错,但是

2016-11-30 21:30:07 2813 1

原创 面向对象程序设计-------c++继承小结

1.继承的引入1.1继承的概念:继承:所谓继承,就是从先辈处得到属性和特征。类的继承就是新类从已有类得到已有的特性,新类被称为派生类,已有类被称为基类。可抽象为派生类是基类的具体化,而基类则是派生类的抽象。1.2继承的意义:继承机制是面向对象程序设计中避免代码重复的最重要的手段,它允许程序员对已有类进行扩展,增加功能。2.继承的定义格式2.1定义格式class 派生

2016-11-01 23:56:35 645

原创 顺序表的链式储存

#ifndef __LINKLIST_H__#define __LINKLIST_H__#include#include#includetypedef int DataType;typedef struct LinkNode{ DataType data; struct LinkNode* next;}LinkNode,*pLinkNode;typedef stru

2016-06-06 15:59:36 616

原创 排序的三种方式(冒泡,插入,和选择)

冒泡排序,直接插入排序 ,选择排序

2016-06-02 02:20:34 414

原创 模拟实现atoi(),字符串循环位移,8bit位指定位的置0或置1

1.实现一个8bit数据的指定位的置0或置1操作,其他位不变;#include#includevoid bit_set(unsigned char *p_data,unsigned char pos,int flag){   assert(p_data);   assert(pos>=1&&pos   if(flag==1)//置1   {       *p_d

2016-05-30 16:29:33 544

原创 自我检测3

1模拟实现strncpy:详见:我的博客《字符串操作函数模拟实现大全》;2.模拟实现atoi函数,将数字字符串自动转化为十进制数字输出:例如给出字符串“12345”,输出12345.《剑指office》习题程序实现:#include#include#includeint my_atoi(const char* str){ int flag=1; int ret=0;

2016-05-21 03:13:37 381

原创 通讯录的实现(动态实现)

在静态实现1000人通讯录的基础上,这次我们来动态实现,可以动态开辟内存空间,不受人数的限制,但此处的不受限制是相对的,如果内存用完了,那也不能再添加联系人了;这次我们在静态实现的基础上再次优化,使用了枚举,以及对每次执行完一个功能时的页面进行优化,让使用者不再麻烦的去看最顶上的操作目录;首先定义了头文件:contacts.h#include #include #inclu

2016-05-17 00:56:40 488

原创 1000人通讯录的实现(静态实现)

实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人首先:建立一个头文件contacts.h#include #

2016-05-12 16:44:20 431

原创 自我检测题2

1.模拟实现memmove

2016-05-11 00:49:50 428

原创 sizeof关键字的讲解和深入理解

1.sizeof(1)结果的单位为字节;(2)计算类型的大小;        写法:sizeof(int),其中括号不能省略;(3)也可以计算变量所占内存的大小;         写法:int i;                    sizeof(i);        其中括号可以省略;但为了好记,不出错,我们不论是求类型还是变量都写上括号;(4)sizeof一

2016-05-10 20:36:11 1044

原创 结构体内存大小的求法(内存对齐)

结构储存分配是一个很重要,很基础的东西,面试的时候大多数面试官都会问到的问题,所以在此还是有必要去讲一下!首先我们必须知道是三个概念:1.结构体内存对齐。2.为什么要有结构体内存对齐?答:(1)使用空间来换取时间的设计;(2)和平台有关3.怎么求结构体的内存大小;其次以下概念我们必须牢记:1.默认对齐数:vs/vc------8;

2016-05-10 20:23:16 1171 1

原创 勤于测试前面学过的知识之测试题

在学习的过程中,不要一味地去学习新知识,温故以前学习的知识也是很有必要的:下面是我自己前几天测试自己的一些基本的试题;拿出来分享一下1.写一个指针数组;2.写一个数组指针;3.写一个函数指针;4.写一个函数指针数组;5.写一个函数指针数组指针;6.用自己的话解释含义:  int*  (  *fun  (  double , char* )  ) (   char*,   i

2016-05-08 23:38:43 309

原创 那些有趣的字符串操作函数(2)

不知不觉,字符串操作函数已经学习完了;今天就给总结几个比较少见但还是很重要的字符串操作函数:话不多说直接进入正题:1.模拟实现strchr:含义:返回一个字符串中某个字符第一次出现的地址,并输出此字符及其后面的字符串;程序代码:#include #include#includechar *mystrchr(char const *s,int c) {

2016-05-07 18:56:10 380

原创 冒泡排序的例题讲解

1.常见的数字冒泡排序//#include//void Maopao(int arr[],int n)//{// int i=0;// int sign=0;// for(i=0;i<n-1;i++) // 比较趟数,每次回来一趟下一次两两比较的时候少一个数;// { // // int j=0;// sign=1;// for(j=0;

2016-05-04 02:22:24 3171

原创 字符串操作函数模拟实现大全

在学习字符串的时候,我们常常会遇到一些相关功能的函数用于字符串,是问题变得简单:这些函数在c语言库函数中存在,我们直接使用就可以了;不过在一些面试中我们常常会被要求模拟实现这些函数;所以知道这些函数的实现过程还是有必要的:以下是本人在学习中总结的一些常用的字符串操作函数的模拟实现过程和一些使用例题:#define _CRT_SECURE_NO_WARNINGS 1 1.strcpy的实现:将

2016-05-04 01:09:38 665

原创 main函数参数的使用和指针数组的理解结合实例

1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入test.exe -a 1 2      执行1+2输出3函数实现:#define _CRT_SECURE_NO_WARNINGS#include#include int

2016-05-03 01:37:47 1383 1

原创 高级指针的概念和应用完整版(图文讲解)

一:数组指针和指针数组的理解:1.首先我们从一个例子开始讲起includeint main(){int a[5][5]={0};//创建一个二维整型数组,并初始每个元素化为0;int(*p)[4]=NULL;//定义一个数组指针,这个指针指向大小为四,并且每个元素为int型的指针,将此指针初始化为空;p=(int(*)[4])a;//二维数组的数组名a,代表一个大小

2016-05-02 17:29:06 808

原创 高级指针概念和应用

一:数组指针和指针数组的理解:1.首先我们从一个例子开始讲起includeint main(){int a[5][5]={0};//创建一个二维整型数组,并初始每个元素化为0;int(*p)[4]=NULL;//定义一个数组指针,这个指针指向大小为四,并且每个元素为int型的指针,将此指针初始化为空;p=(int(*)[4])a;//二维数组的数组名a,代表一个大小为5

2016-05-01 21:28:54 1500

原创 浅谈可变参数列表

1.在函数原型中,列出了函数期望接受的参数,但原型只能显示固定数目的参数。让一个函数在不同的时候接受不同数目的参数是不是可以呢?   答案是肯定的,但存在一些限制。2.这时我们就用到了可变参数列表;(1)使用可变参数列表首先要假如头文件#include;它的含义有哪些呢?va_list char*类型的指针; va_start 宏va_arg 宏va_end

2016-04-18 17:17:06 471

原创 n的阶乘;计算1!+2!+3!+4!+...+10!;编写代码,演示多个字符从两边移动,向中间汇聚;求ax^2+bx+c=0的解;写一个程序返回参数二进制中1的个数;6.求两个数的最大公约数。

1.计算n的阶乘。#includeint main(){int i;int n;    int t=1;printf("请输入一个整数:");    scanf("%d",&n);for(i=1;i{       t=t*i; }printf("%d!=%d\n",n,t);return 0;}2.计算1!+2!+3!+4

2016-03-26 18:47:28 3163

原创 每日一讲:C语言getchar函数的用法

getchar 由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII

2016-03-26 15:17:33 3000 1

原创 输出一个整数的每一位,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,编写程序数一下 1到 100 的所有整数中出现多少次数字 9

1. 输出一个整数的每一位。#includevoid main(){int date;int temp=0;   scanf("%d",&date);printf("%d这个数从低位到高位输出的是:",date);while(date>0){     temp=date%10;     printf("%d  ",temp);     date /=

2016-03-23 13:46:29 6411

原创 关于位移运算符的理解和典型题目的讲解

首先给出题目:获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。题目分析:要想获取一个数的奇数位和偶数位,我们可以分别从这个数的二进制数的前段隔一取位,当然取得位上的0和1不能直接输出,要和二进制数1相与,因为1和任何数相与等于任何数本身。函数分析:一个数的二进制位为32比特位,若输出偶数位,则从第31位,开始移位向后所以可以写成循环for(i=31,i>0,i-=2),

2016-03-21 17:13:52 643

转载 while(1) 什么意思 while(i--)什么意思?

while语句的原型是while(表达式)语句,当表达式为非0值时,执行while语句中的嵌套语句。那么while(1)其中1代表一个常量表达式,他永远不会等于0。所以,循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止while(i--)其中i是一个变量,因此表达式i--有不同的值,依次递减,i--是先取值后减,--i先加后取值,所以i--的值同未执行该自减运算时的

2016-03-19 19:35:46 8043

原创 打印100~200 之间的素数,输出乘法口诀表,判断1000年---2000年之间的闰年

1.打印100~200 之间的素数#include int main(){    int n,i;    for(i=100;i       {           for(n=2;n          {           if(i%n==0)           break;           }         if(n>i-1)   

2016-03-16 22:30:25 846 1

原创 关于变量值的互换和求一组数的最大数,程序的那些事

1.给定两个整形变量的值,将两个值的内容进行交换。作业:#includeint main(){int a=10,b=20,t;t=a;a=b;b=t;printf("a=%d,b=%d",a,b); return 0;}2.不允许创建临时变量,交换两个数的内容(附加题)#includeint main(){int a=10,b=2

2016-03-16 21:17:54 415

空空如也

空空如也

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

TA关注的人

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