- 博客(68)
- 收藏
- 关注
转载 大整数加法
Description比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。Input输入数据有多组。首先输入一个整数T,表示有T组输入。每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。Output对于每组输入,输出两个整数的和,单独占一行。Sample Input21 2112233445...
2019-03-24 13:15:00
366
转载 const常量详解
const常量的定义在C语言中,采用编译指令#define方法定义常量,例如#define PI 3,14由于编译指令#define不是C++语句,所以行末不用分号,程序在预编译时把出现标识符PI全部用3,14替换,在程序预编译结束后,程序中就不再拥有PI这个标识符PI不是变量,没有类型,不占用存储单元。在C++中使用const定义常量有两种方式:方式1:co...
2019-03-16 15:37:00
877
转载 C++内联函数(C++ inline)详解
内联函数的使用有利于代码的重用,可以提高开发效率,增加程序的可靠性,也利于分工合作和修改维护。函数在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参复制给形参,最后也要将返回地址入栈(该地址指明了函数结束后,程序应该从哪开始执行),最后跳转到函数内部执行,这个过程是要浪费时间的。另外函数在执行return语句时,需要从栈中回收形参和局部变量的存储空间,然后...
2019-03-15 23:51:00
309
转载 字符串指针的理解
回忆一波字符串指针,主要是因为最近复习到了C++的内容,如果有些错的地方大家希望可以指出,我们共同进步。 1 #include <stdio.h> 2 #include<iostream> 3 4 using namespace std; 5 6 void main(){ 7 8 char* p1 = "...
2019-03-11 19:26:00
309
转载 常见的三种插入排序
1、直接插入排序算法直接插入排序的基本操作是将一个记录插到已排队好的有序表中,从而得到一个新的,记录增1的有序表。 1 // 直接插入排序.cpp : 定义控制台应用程序的入口点。 2 // 3 #include "stdafx.h" 4 #include "stdio.h" 5 //直接插入排序 6 void InsertSort(int a[], in...
2019-03-07 22:02:00
997
转载 最优二叉树(赫夫曼树)
赫夫曼树的介绍(写的不好地方大佬请指教)最优二叉树又称哈夫曼树,是带权路径最短的二叉树。根据节点的个数,权值的不同,最优二叉树的形状也不同。图 6-34 是 3 棵最优二叉树的例子,它们共同的特点是带权节点都是叶子节点,权值越小,就离根节点也远,那么我们是如何构建这颗最优二叉树步骤如下:那如何创建这一个哈夫曼树呢?(百度百科)假设有n个权值,则构...
2019-03-05 12:37:00
1501
转载 经典算法之冒泡排序
冒泡排序冒泡排序是一种交换的排序方法,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,指到没有反序的记录为止。大一的时候C语言老师讲过,听的一脸懵,大三重新再来记录记录,加深印象。既然是交换排序,那谁那谁交换呢?找了张大佬的图,看的比较清楚下面以数列{20,40,30,10,60,50}为例,演示它的冒泡排序过程(如下图)。我们来分析一波数据是如何交...
2019-03-03 17:07:00
166
转载 算法的时间复杂的分析(推导大O())
1、算法的时间复杂的分析定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进算法时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。一般用...
2019-03-03 12:13:00
263
转载 理解快速排序(有图有真相)
看完郝斌老师的数据结构,特来做做笔记(有写的不好的地方请大佬指教)快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想分治思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以...
2019-03-03 11:36:00
170
转载 线索二叉树C+Java
1、线索二叉树的原理:为什么会有线索二叉树呢?我们观察一个普通的二叉树:这正是我们平常见到的二叉树,可以发现A,B,C,D这四个节点它们的左孩子和有孩子都有节点,而E,F,G,H,I,J它们都有空闲的指针,这些空闲的指针不存储任何事物白白浪费了内存的资源。当我们中序遍历二叉树:HDIBJEAFCG .遍历完之后可以指到每个节点的前驱和后继,如D的前驱是H,后继是I。...
2019-02-25 23:51:00
156
转载 二叉树的顺序存储C+Java
前言:前面有点事耽误了一阵子,本来想写完数据结构再复习Java的...还是先补完把。话不多说,前面我们已经学习到了数据的链式存储结构,相对于下面要讲的顺序存储结构难些。因为树是一种一对多的数据结构,由于它的特殊性使用顺序存储结构也可以实现。顺序存储二叉树:二叉树的顺序存储结构就是一维数组存储二叉树中的节点,并且节点的存储位置,也就是数组下标要能体现节点之间的关系,比如...
2019-02-22 21:00:00
264
转载 TCP创建多人聊天室
群聊-聊天室群聊:任何时候,任何一个客户端都可以向其它客户端发送和接受数据,服务器只起到转发的作用。1、首先创建一个聊天室的简易版(版本1)。需求:可以多个用户同时访问服务端,并且可以不断各自请求服务端获取响应的数据。可以多个用户同时访问服务端:这个需要在服务端创建多线程,使服务端的监听套接字,可以被多个客户端使用。可以不断各自请求服务端获取响应的数据:这个只需要在客...
2019-02-20 15:06:00
482
转载 其它几个常用的IO辅助流
常用的其它流1、数据流(DataInputStream/DataOutputStream)java.io 类 DataInputStreamjava.lang.Object 继承者java.io.InputStream 继承者java.io.FilterInputStream 继承者java.io.DataInputStreampublic cl...
2019-02-19 00:07:00
195
转载 IO缓冲流与转换流
IO缓冲流Java的IO流按流向分为输入流和输出流,按流的性能,又可以将流分为节点流和处理流。节点流节点流:直接与数据源相连,读入或读出。直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。常用的节点流父 类 :InputStream、OutputStream、Reader、Writer文 件 :FileInputStream、Fil...
2019-02-18 20:37:00
175
转载 IO流的输入输出
Java IO体系字节流操作类和字符流操作类组成了Java IO体系。看下面一张图从上图可以看到,整个Java IO体系都是基于字符流(InputStream/OutputStream) 和 字节流(Reader/Writer)作为基类,它们是IO操作的四大抽象类,根据不同的数据载体或功能派生出来的。流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数...
2019-02-18 17:16:00
145
转载 File类的基本使用
java.io类 Filejava.lang.Objectjava.io.File所有已实现的接口:Serializable, Comparable<File>public class Fileextends Objectimplements Serializable, Comparable<File>文件和目录路径名的抽象表示形式...
2019-02-18 12:21:00
157
转载 网络编程之TCP通信
1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据,通过三次握手方式建立连接,形成传输数据的通道,在连接中进行大量数据的传输,效率会稍低2、Java中基于TCP协议实现网络通信的类 客户端的Socket类 服务器端的ServerSocket类3、Socket通信的步骤 ① 创建ServerS...
2019-02-18 01:14:00
199
转载 内部类创建对象需要注意
Java中出现No enclosing instance of type XXX is accessible问题Java编写代码过程中遇到了一个问题,main方法中创建内部类的实例时,编译阶段出现错误,查看错误描述:Multiple markers at this line- The value of the local variable test is not used...
2019-02-17 20:05:00
206
转载 网络编程day1-本地信息的获取
网络编程day11、InetAddress类java.net 类 InetAddressjava.lang.Object 继承者java.net.InetAddress所有已实现的接口:Serializable直接已知子类:Inet4Address, Inet6AddressIP地址:定位一个节点:计算机。路由设备。通讯设备等InetAddress类用于...
2019-02-16 23:16:00
157
转载 IO组件之Commons 基本使用步骤
引言Java组件 :组件是抽象的概念而已,通俗的说是一些符合某种规范的类组合在一起就构成了组件。他可以提供某些特定的功能,可以理解为是由多个jar包构成的 。简单理解为多个.class文件构成jar包 ,多个jar包构成组件 ,多个组件构成框架。Commons 如何使用 ?1、首先我们得到 http://apache.org/ ,这Commons组件使用包...
2019-02-08 22:29:00
206
转载 简单IO流应用之文件目录拷贝
文件目录的拷贝在学习IO流通常遇到目录的操作,涉及到一层层的目录和子孙级文件,往往使用递归思想。递归思想之巧妙,但要处理大量的函数压栈和出栈问题,效率并不高。主要思路:将问题模块化:文件目录的拷贝其实就是分为模块1:从源操作目录拷贝文件到目的操作目录模块2:在目的操作文件目录下创建新的目录模块1实现: 1 public static void t...
2019-02-07 22:26:00
147
转载 Java 自定义双向链表
双向链表LinkedList其实也就是我们在数据结构中的链表,这种数据结构有这样的特性:分配内存空间不是必须是连续的;插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1);访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n);在Java中,LinkedList提供了丰富的方法,可以模拟链式队列,链式堆栈等数据结构,为用户带来了极大的方便,下面我们来自定义一个...
2019-02-03 22:30:00
224
转载 Java函数参数传递
到底是传值or 传引用(传地址)结论:1、基本数据类型作为参数传递时,是值得拷贝,无论你是怎么修改这个拷贝的,原来的值是不是被改变的。2、对象作为参数传递时,其实是把对象在堆内存的中的地址拷贝了一份传给了参数。一、基本类型作为参数传递测试1:结果:所以可以看出,基本类型作为参数传递时,是传递值得拷贝,无论你是怎么修改这个拷贝,原值是不会改变的。...
2019-01-31 12:36:00
698
转载 static 静态变量,静态方法
Java之静态变量引入一个类可以创建多个对象 ,每个对象都拥有自己的成员,各自互相独立。然而在某些特殊情况下,我们希望该类的所有对象共享一个成员,这个时候就可以把这个成员设置为static在Java中,被static修饰的成员称为静态成员,它是属于整个类的,在类被加载的时候被分配到静态区(在堆里面)。这个时候属于它就不单独属于某个特定的对象了,即被类的所有对象所共享...
2019-01-31 11:48:00
159
转载 链式二叉树的三种遍历(Java递归)
主要上一篇用于区分C语言写的 1 package bitree; 2 3 public class BiTree { 4 5 char data; 6 BiTree lchild, rchild; 7 8 /** 9 * 创建二叉树 10 */ 11 int ind...
2019-01-31 10:52:00
134
转载 图的一些基本概念
1、图的的定义前言前面我们学习了线性表,栈、队列和树。前面三者都属于线性表范畴,它的的数据元素是被串起来的,仅有线性关系,每个元素仅有一个直接前驱和一个直接后继,是属于一对一关系。在树里面,每个元素之间存在着明显的层次关系,每一层的元素可能和下一层的多个元素相关,但只能和上一层的一个元素相关,属于一对多的关系。而图是一种较线性表和树更为复杂的数据结构,在图的结构中,节点和节点的...
2019-01-29 15:44:00
211
转载 链式二叉树的三种遍历方法(C递归)
二叉树的三种遍历链式二叉树又称二叉链表,遍历有三种,分别是前序(先序),中序,后序。首先创建二叉树,没有建立,何谈遍历?定义二叉树的存储结构为链式存储1 typedef struct BiNode{2 int data;3 BiNode *lchild,*rchild; //左孩子和右孩子5 }BiNode;6 typedef st...
2019-01-29 13:51:00
619
转载 树、二叉树的一些基本概念
写在前面我们前面的栈、队列以及线性表都是线性结构、而树是非线性结构的。因此,树中的元素之间一般不存在类似线性结构的一对一的关系,而表现更多的是多对多的关系。直观的看,它是数据元素(树中的节点),按分支关系组织起来的结构。很显然,树形结构是比线性结构更复杂的一种数据结构类型。树1、树的定义它具有以下特点:(01) 每个节点有零个或多个子节点;(02) 没有父节点的节...
2019-01-27 16:30:00
139
转载 BF算法与KMP算法(字符串匹配算法)
BF算法BF算法,简称暴力破解Bruce Force ,又称朴素模式的匹配算法。可以看出BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较,直到得出最后的匹配结果。这种算法的比较很暴力,由于产生了多次的回溯,在效率上存在很大的缺陷...
2019-01-27 13:11:00
353
转载 汉诺塔游戏攻略(递归)
汉诺塔(益智玩具)汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 - -摘抄于百度百科那么我们怎么玩呢?其实是有规律性的游戏...
2019-01-25 20:12:00
534
转载 队列的链式存储结构
队列的链式存储结构所谓队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已。为了操作方便,我们将队头指针指向链队列的头结点,而队尾指针指向终点元素,注意这个时候不是尾部元素的下一个了。如图:空队列时,头指针front和尾指针rear都指向头结点。链队列的结构为1 typedef struct QNode //节点结构2 {3 ...
2019-01-23 23:42:00
370
转载 队列的顺序存储结构
队列的顺序存储结构之循环队列队列的定义:只允许在一端进行操作,在另一端进行删除操作的线性表。队列是一种先进先出的线性表,简称FIFO,允许插入的一端称为队尾,允许删除的一端称为队头。1、队列的顺序存储结构存在缺陷原因: 假设一个队列有n个元素,则顺序存储的队列需要建立一个大于n的数组,并把队列的所有元素存储在数组的前n个单元,数组下标为0的一端即为对头。...
2019-01-23 15:42:00
824
转载 栈的应用---递归
递归栈有一个很重要的应用:在程序设计语言中实现了递归。那什么是递归呢?当你往镜子前面一站,镜子里面有你一个像。那如果两面镜子一起照呢?那么两面镜子里面都会产生千千万个就会产生你,这就产生了递归现象。就像上面这张专辑图片的左上角一样。递归的一个典型例子斐波那契数列的实现 --那什么是斐波那契数列呢 ??看这一个数列:下标1234...
2019-01-23 13:33:00
558
转载 栈的链式存储结构及应用(C、Java代码)
链式存储结构最大的好处就是没有空间的限制,可以通过指针指向将结点像以链的形式把结点链接,我们熟悉的线性表就有链式存储结构。当然,栈同样有链式存储结构,栈的链式存储结构,简称链栈。从图片可以看到,和单链表很像,拥有一个头指针top,又称作栈顶指针,所以此时就不再需要单链表里面的头结点了。对于链栈来说,基本不存在栈满的情况,除非计算机内存已经没有了可使用的空间,如果真的存在,...
2019-01-22 23:01:00
346
转载 栈的顺序存储结构及应用(C、Java代码)
栈的定义:栈(stack)是限定仅在表尾进行插入和删除的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom) ,不包含任何数据元素的栈称为空栈,栈又称为先进后出的线性表,简称LIFO结构。栈的插入操作:叫做进栈,或压栈、入栈。栈的删除操作:叫做,出栈,或者弹栈。栈的结构定义1 /*栈的结构定义*/2 typedef int ...
2019-01-22 12:16:00
274
转载 静态链表、循环链表、双向链表(C代码实现)
静态链表对于没有指针的编程语言,可以用数组替代指针,来描述链表。让数组的每个元素由data和cur两部分组成,其中cur相当于链表的next指针,这种用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。我们对数组的第一个和最后一个元素做特殊处理,不存数据。让数组的第一个元素cur存放第一个备用元素(第一个未被占用的元素)下标,而数组的最后一个元素cur存放第一个有值的元素下标,...
2019-01-22 00:42:00
171
转载 线性表的链式存储结构(Java代码实现)
附上上一节的Java代码 1 package LinkListDemo2; 2 3 public class LinkList { 4 5 int data; 6 LinkList next; 7 8 /** 9 * 链表的初始化 10 */ 11 public v...
2019-01-21 22:40:00
483
转载 线性表的链式存储(C代码实现)
线性表的链式存储结构线性表的实现分顺序存储结构和链式存储结构。线性表的链式存储结构又称单链表。上一节我们学习了线性表的顺序存储结构,并实现解顺序存储的基本操作。这一节我们来学习线性表链式存储结构,那我们再想象一下我为什么我们要引入链式存储结构,万物存在必有其道理主要还是因为线性存储结构存在着这样一个问题:当我们需要插入和删除元素时,就必须挪动大量与之无关的元素,因为线...
2019-01-21 17:55:00
676
转载 线性表的顺序存储(Java代码实现)
线性表的顺序存储--线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。代码实现的功能包括线性表的初始化,判断是否为空、清空、增加元素、删除元素、合并线性表等操作。Java代码附上:package LinkListDemo2;public class LinkLi...
2019-01-20 17:23:00
404
转载 线性表的顺序存储(C代码实现)
线性表的顺序存储--线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。线性表示什么?借助网上大佬的一个例子小学生放学都是要按顺序排队的,一个接一个,每个小学生的前后位置是固定的,这样便于迅速清点。其实这就是一个线性表,从这件事里我们就可以找到很多关于线性表的特性...
2019-01-19 23:46:00
297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人