c/c++语言
文章平均质量分 67
Arvin_success
喜欢简单的事物,随心所欲。
展开
-
数据结构之多栈
3、多栈3.1、常常在一个程序中要用到多个栈,为了不发生上溢错误,就必须给每个栈预先分配一个足够大的存储空间,但实际中很难准确估计。另一方面,若每个栈都预分配过大的存储空间,会造成系统资源的浪费。若让多个栈共用一个足够的的连续存储空间,则可利用栈的动态特性使它们的存储空间互补。在栈的共享中最常见的是两个栈共享。假设两个栈共享一维数组stack[MAXNUM],则可以利用栈的“栈底位置不变,栈顶转载 2015-09-09 23:13:26 · 1870 阅读 · 0 评论 -
C语言之回调函数
回调函数:通过函数指针调用的函数。把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指的函数时,我们就说这时回调函数。原创 2015-09-30 19:34:09 · 570 阅读 · 0 评论 -
C语言类与对象的实现
本文转自:http://www.cnblogs.com/chencheng/archive/2012/12/22/2825692.html为什么要用C来模拟面向对象的机制,在实际的工作中我们往往在感慨一些面向对象的经典设计模式由于C语言的限制无法使用,其实通过简单的模拟面向对象的行为,在C语言中也可以使用这些模式。1:类的构建类描述了所创建的对象共同的属性和转载 2015-10-06 16:46:47 · 1660 阅读 · 0 评论 -
C语言实现封装、继承和多态
转载自董的博客,本文链接地址: http://dongxicheng.org/cpp/ooc/1、 概述C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Interface的定义,你可以发现有这样的宏定义:#if转载 2015-09-17 20:06:00 · 429 阅读 · 0 评论 -
C语言设计模式与接口
本文转自:http://www.cnblogs.com/chencheng/archive/2013/01/06/2848296.htmlC语言的设计模式-接口隔离接口隔离:定义为客户端不应该依赖它不需用的接口,在C语言中我们可以把头文件看成一个模块的接口,根据接口隔离原则也就是说这个头文件中只能包含外部需要的接口,但在实际的项目中往往头文件都不符合接口隔离原则。转载 2015-10-06 16:31:33 · 700 阅读 · 0 评论 -
Sublime Text2.0.2注册码
Sublime Text2.0.2注册码 - Aries‘s的部落 2013-09-26 17:09:30| 分类: IT新闻|举报|字号 订阅Sublime Text2.0.2注册码 直接输入注册码就可以了----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-85560转载 2015-09-18 13:05:40 · 507 阅读 · 0 评论 -
C语言之单链表操作之插入
2、插入(后插)假设在一个单链表中存在2个连续结点p、q(其中p为q的直接前驱),若我们需要在p、q之间插入一个新结点s,那么我们必须先为s分配空间并赋值,然后使p的链域存储s的地址,s的链域存储q的地址即可。(p->link=s;s->link=q),这样就完成了插入操作。下例是应用插入算法的一个例子:#include #include #include #define转载 2015-09-10 20:02:03 · 3209 阅读 · 1 评论 -
gets函数哈scanf函数的区别
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。char string[15]; gets(string); /*遇到回车认为输入结束*/scanf("%s",string); /*遇到转载 2015-09-21 15:41:09 · 361 阅读 · 0 评论 -
字符串处理的两个问题
字符处理的两个问题:处理字符是C语言中的常见操作,有两个问题需要讨论:一是判断字符处理结束的标志是空字符还是换行符,二是循环处理字符时,循环次数是字符数组的容量大小还是实际输入字符的个数。举例: 键盘输入一行字符,统计大写字符的个数。本例可用两种方法编程,第一种方法的代码如下:#include int main(){char c; int n = 0;while((转载 2015-09-23 15:14:57 · 402 阅读 · 0 评论 -
字符串匹配
一.简单匹配算法 先来看一个简单匹配算法的函数: int Index_BF ( char S [ ], char T [ ], int pos ) { /* 若串 S 中从第pos(S 的下标0≤pos 起存在和串 T 相同的子串,则称匹配成功,返回第一个 这样的子串在串 S 中的下标,否则返回 -1 */原创 2015-09-23 16:41:25 · 335 阅读 · 0 评论 -
字符串处理的例子
例1.统计字符串中的单词次数:#include #include #include int main() { int i; int word=0; int num=0; char str[100]; char c; printf("please enter sentanses: ");原创 2015-09-21 21:34:35 · 390 阅读 · 0 评论 -
linux终端版学生信息管理系统【C语言实现】
/*-----------------------------------------------------------------------------------------程序名:stu_management.c程序功能: 1.鉴别root权限,设置管理员和学生权限,管理员和学生可以异步登录 (如果加入网络模块就可以实现多用户同步登录)转载 2015-11-02 16:46:07 · 6894 阅读 · 3 评论 -
带头节点链表和不带头节点链表的初始化
带头结点初始化Node *head; //声明头结点void InitList(Node **head){ *head=(Node *)malloc( sizeof(Node)); (*head)->next=NULL;}带头结点尾插入,统一操作。方式一:void CreatList(Node **head){ Node *r=*head,*s;转载 2015-12-13 21:53:18 · 5643 阅读 · 0 评论 -
C语言不定参数的函数
(1)va_list 定义了一个指针arg_ptr, 用于指示可选的参数.(2)va_start(arg_ptr, argN)使参数列表指针arg_ptr指向函数参数列表中的第一个可选参数,argN是位于第一个可选参数之前的固定参数, 或者说最后一个固定参数.如有一va函数的声明是void va_test(char a, char b, char c, ...), 则它的原创 2015-11-28 13:54:19 · 857 阅读 · 0 评论 -
用二级指针删除链表
前几天在网上查找资料是看到了有大牛用二级指针操作链表,然后呢,我也在此写出来与大家分享一下,同时呢也做一下笔记。一般的,我们都是用一级指针做删除链表的工作,如下:typedef struct node{ struct node * next; ....} node; typedef bool (* remove_fn)(node const * v); // R翻译 2015-12-20 22:34:21 · 975 阅读 · 0 评论 -
C++进阶之路
结合一些我的学习经历,希望对于想学C++的人有些帮助. 大家有什么好想法望提出我老师最初是从C语言教起的,用的是潭浩强的>这本书,那时候命令执行都是在CMD里实现,用的编译器是turboc最经常用到的就是 printf cin 对于效率不是很在乎,只要能执行就好了,连warning都忽略(这个很不应该).后来又学了C++,是清华大学出版的>,用的编译器是VC6.转载 2015-10-31 17:27:05 · 767 阅读 · 0 评论 -
C++虚函数及虚函数表解析
出自原文:http://www.keepsimply.org/2012/07/11/cpp-vtable/一、背景知识(一些基本概念)虚函数(Virtual Function):在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。纯虚函数(Pure Virtual Function):基类中没有实现体的虚函数称为纯虚函数(有纯虚函数的基类称为虚基类)。转载 2016-03-03 12:42:22 · 611 阅读 · 0 评论 -
gcc 参数详解[转载]
GCC参数详解 [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件 2.将预处理后的文件不转换成汇编语言,生成文件.s 3.有汇编变为目标代码(机器代码)生成.o的文件 4.连接目标代码,生成可执行程序 [参数详解] -c 只激活预转载 2015-09-07 09:14:11 · 461 阅读 · 0 评论 -
C语言之单链表操作之查找
二、单链表的基本运算建立了一个单链表之后,如果要进行一些如插入、删除等操作该怎么办?所以还须掌握一些单链表的基本算法,来实现这些操作。单链表的基本运算包括:查找、插入和删除。下面我们就一一介绍这三种基本运算的算法,并结合我们建立单链表的例子写出相应的程序。1、查找对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回NULL转载 2015-09-10 20:00:18 · 2069 阅读 · 0 评论 -
数据结构之链队
2、链队2.1、链队的存储结构队列的链接实现称为链队,链队实际上是一个同时带有头指针和尾指针的单链表。头指针指向队头结点,尾指针指向队尾结点即单链表的最后一个结点。队列以链表形式出现,链首结点为队头,链尾结点为队尾。队头指针为LQ->front,队尾指针为LQ->rear,队头元素的引用为Q->front->data,队尾元素的引用为LQ->rear->data.初始化时,设置转载 2015-09-09 23:25:10 · 932 阅读 · 0 评论 -
数据结构之链栈
2、链栈2.1、只允许在表头进行插入和删除运算的单链表称为链栈。链栈有头节点和没有头节点两种。2.2、栈以链表的形式出现,链表 (不带头结点)首指针为s,即栈顶为s,链表尾结点为栈底。 初始化时,s=NULL(不带头结点);s=(LStack *)malloc(sizeof(LStack)),s->next=NULL(带头结点)。 栈顶指针的引用为s(不带头结点)或转载 2015-09-09 23:11:23 · 927 阅读 · 0 评论 -
数据结构之线性队列
1、顺序队列1.1、队列的定义队列(queuq)简称队,它也是一种运算受限的线形表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。我们把进行插入的一端称为队尾(rear),进行删除的一端称为队首(front)。向队列中插入新元素称作进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为出队,出队后,其后继元素成为队首元素。由于队列的插入和删除分别在两端进行,所以要删除转载 2015-09-09 23:17:10 · 494 阅读 · 0 评论 -
数据结构之哈夫曼树
五、哈夫曼树1、哈夫曼树哈夫曼(Huffma)树又称最优二叉树。它是n个带权叶子结点构成的所有二叉树中,带权路径长度WTL最小的二叉树。因为构造这种树的算法是最早由哈夫曼于1952年提出的,所以被称为哈夫曼树,相应的算法称为哈夫曼算法。从树中某一结点到另一个节点所经过的分支构成这两个节点之间的路径。路径的分支数目叫做这两个节点之间的路径长度。树的路径长度是从树根到树转载 2015-09-09 23:38:27 · 844 阅读 · 0 评论 -
数据结构之树的应用
六、树的应用1、利用树型结构求解集合的幂求集合{1,2,…,n}的幂集问题是一个经典的问题。解决这个问题的最典型做法就是递归调用。利用树型结构这个参照系来设计求集合{1,2,…,n}的幂集算法,对于给定的集合{1,2,3,4},按幂集集合中的元素个数和字典次序建立的树如下: {}{1}转载 2015-09-09 23:39:37 · 1290 阅读 · 0 评论 -
数据结构之图
一、图的基本概念1、图的定义图是一种数据结构,图和树一样可以用二元组表示。它可定义为Graph=(V,R)其中,V={x|x∈datatype},R={VR},VR={|P(x,y)∧(x,y∈V)}。在图中,数据元素常称为顶点(Vertex),V是顶点的非空有穷集合;R是边(弧)的有穷集合。VR是两个顶点之间的关系集合。顶点之间关系可用序偶对来表示。若∈VR,则〈x,y>表示从x转载 2015-09-09 23:42:52 · 477 阅读 · 0 评论 -
数据结构之顺序栈
1、顺序栈1.1、栈的简述栈(stack)又叫堆栈,它是一种预算受限的线性表,只能在表的一端进行插入和删除运算。栈中允许插入、删除的一端称为栈顶,另一端称为栈底。处于栈顶位置的数据元素称为栈顶元素,向一个栈插入新元素称为进栈、入栈、压栈,从一个栈删除元素又称作出栈或退栈,不含任何元素的栈称为空栈。栈的特点为后进先出(Last In First Out,LIFO)。日常例子:刷洗盘子、自转载 2015-09-09 23:08:42 · 660 阅读 · 0 评论 -
数据结构之树的遍历
三、遍历 A B C D E F G H I/*树节点C语言描述*/#define M 10typedef转载 2015-09-09 23:35:29 · 532 阅读 · 0 评论 -
数据结构之栈的应用
4、栈的应用栈在计算机科学领域具有广泛地应用。如,在编译和运行计算机语言程序的过程中,就需要利用栈进行语法检查(如{和}是否配对)、计算表达式的值、实现递归过程和函数的都要用等。4.1、将一个十进制数转换为二进制注:以下程序在VC6.0+WIN98下测试通过把十进制正整数转换为对应的二进制整数采用逐次除以2取余法,即用基数2不断的去除被转换的正整数,直到商为0。则第一次相除所得余数转载 2015-09-09 23:15:05 · 732 阅读 · 0 评论 -
数据结构之树
一、树的基本概念树型数据结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。它描述了客观世界中事物之间的层次关系,树在计算机领域内也有广泛的应用,如在编译程序中,可用树表示源程序的语法结构。在数据库系统中的文件索引机构一般采用树来表示。(一)树的定义树(tree)是有n(n>=0)个结点组成的有限集合,该集合可用T来表示。当T非空时满足:1、有且仅有一个特定的结点称为根(ro转载 2015-09-09 23:27:05 · 500 阅读 · 0 评论 -
数据结构之线索二叉树
四、线索二叉树遍历二叉树是以一定的规则将二叉树中的结点排列成一个线性序列,即二叉树的先序序列、中序序列或后序序列,在这些线性序列中,每个结点仅有一个直接前驱和直接后继。以二叉链表作为存储结构时,只能得到结点左、右子树的信息,而不能直接得到结点在某一序列中的前驱和后继,这些信息只能在遍历的动态过程中才能得到。其实n个结点的二叉链表中必定存在n+1个空链域,因此可以利用这些空链域来存放结点的前转载 2015-09-09 23:36:48 · 934 阅读 · 0 评论 -
数据结构之图的遍历
二、图的遍历给定一个无向连通图,从图的任意指定顶点出发,依照某种规则去访问图中所有顶点,且每个顶点仅被访问一次,这一访问过程叫作图的遍历(graph traversal)数的遍历是利用树求解各类问题的基础,是树的一个最基本的运算。同样,图的遍历算法是求解图的连通性、拓扑排序和求关键路径等算法的基础。图的遍历比树的遍历复杂,由于图的任一点都有可能和其余个顶点相邻接,故在访问了某个顶点之后,沿转载 2015-09-09 23:44:21 · 1361 阅读 · 0 评论 -
c语言之建立单链表
一、单链表的建立有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储本身数据2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typ转载 2015-09-10 19:58:35 · 475 阅读 · 0 评论 -
C语言之循环链表
一、循环链表循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。循环链表的运算与单链表的运算基本一致。所不同的有以下几点:1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、在判断是否转载 2015-09-10 20:04:20 · 696 阅读 · 0 评论 -
C语言之单链表应用举例
在这里列举了一个应用单链表基本算法的综合程序,双向链表和循环链表的综合程序大家可以自己去试一试。#include #include #include #define N 10typedef struct node{char name[20];struct node *link;}stud;stud * creat(int n){stud *p,*h,转载 2015-09-10 20:08:24 · 863 阅读 · 0 评论 -
C语言之动态内存分配
准备:动态内存分配一、为什么用动态内存分配但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:float score[30];但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并转载 2015-09-10 19:54:23 · 461 阅读 · 0 评论 -
C语言之双向链表之操作
双向链表的基本运算:1、查找假若我们要在一个带表头的双向循环链表中查找数据域为一特定值的某个结点时,我们同样从表头结点往后依次比较各结点数据域的值,若正是该特定值,则返回指向结点的指针,否则继续往后查,直到表尾。下例就是应用双向循环链表查找算法的一个程序。#include #include #define N 10typedef struct node{char转载 2015-09-10 20:07:32 · 588 阅读 · 0 评论 -
几种字符串倒序输出
1、使用指针#include #include #include int main(int argc, char** argv){ char *src="I am a student"; char *dest=NULL; char *ss=NULL; int i, len; char *p1, *p2; len = strlen(src); p原创 2016-09-27 17:16:24 · 1097 阅读 · 0 评论