个人总结
文章平均质量分 76
Hanani_Jia
这个作者很懒,什么都没留下…
展开
-
vs2013使用技巧--快捷操作
安装vs2013很久了,但是发现操作起来很麻烦,看着很多人特别流畅的在使用vs,我感觉自己必须要缩减编写代码以外的时间,所以今天我总结了一些vs2013的快捷键、快捷操作方式,可能在别的版本并不适用,但是都大同小异肯定都有。 十分常用的一些快捷键有: F5 是快速启动这个程序的调试。 Ctrl +F5是不调试直接运行这个程序 F9 是快捷设置程序短点 我现在还没感到设置断点的作原创 2017-11-23 00:19:34 · 841 阅读 · 0 评论 -
VS2013设置行号
打开vs工具栏,之后找到最下边选项 打开之后选择C/C++一栏,选择常规 在行号前边打勾。原创 2017-12-12 11:21:21 · 588 阅读 · 0 评论 -
Xshell使用教程
Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。很多人在安装虚拟机的时候安装结束之后原创 2017-12-06 16:30:01 · 106242 阅读 · 12 评论 -
static总结
来自百度....之后会专门整理...C++中C++与C#的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。[1] 面向过程静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:原创 2017-12-25 21:56:47 · 420 阅读 · 0 评论 -
模拟实现strcpy 模拟实现strcat
1. 模拟实现strcpy #define _CRT_SECURE_NO_WARNINGS 1 #include#include#include char *my_strcpy(char *aim, const char *dest){assert((dest) && (aim));char *c = aim;while (*aim++ = *dest+原创 2017-12-31 13:05:41 · 411 阅读 · 0 评论 -
int类型数据在计算机中的存储
原码、反码、补码机器的大小端存储原创 2017-12-18 17:43:05 · 12018 阅读 · 4 评论 -
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:命令行参数输入:test.exe -a 1 2 执行1+2输出3 #include #include #include int main(int原创 2018-01-04 19:02:46 · 1511 阅读 · 0 评论 -
模拟实现strstr函数
模拟实现库函数strstr原创 2018-01-05 23:30:14 · 492 阅读 · 0 评论 -
模拟实现strchr
模拟实现strchr库函数原创 2018-01-06 00:11:14 · 753 阅读 · 0 评论 -
模拟实现strcmp
这次给大家介绍并模拟的是strcmp函数。 其实对于cplusplus网站上的解释我大多是看不懂的,自己的英语能力比较差,很多人说那你还看干啥,直接去百度,通俗易懂。我建议大家一定要去看一下http://www.cplusplus.com/这个网站对你不明白的函数的解释,原因有两点。一是因为他是一个官方网站,他对函数的描述和应用都是十分的规范的,不存在有人为的更改,你获得的信息的可靠性还是原创 2018-01-06 12:04:24 · 378 阅读 · 0 评论 -
模拟实现memmove
这次给大家介绍的是memmove,同样还是看不懂英文在说什么,还是看一下百度给我们的通俗易懂的解释。 这就是之前我所说到的,memcpy的一个函数漏洞,他库函数本身就不能避免这个漏洞,所以在进行模仿的时候虽然发现了这个问题但是还是没有将这个问题弥补,因为有让你弥补的地方,那就是来模仿这个memmove函数。 再给大家来说一下memcpy函数的漏洞是哪个,就是上图这样,如果你开始将原原创 2018-01-07 00:35:36 · 907 阅读 · 0 评论 -
模拟实现memcpy
这次我来模拟实现的是memcpy库函数。 其实发现这个函数和之前写的strcpy很像,但是最明显的区别就是这个函数他需要三个参数而strcpy则是两个参数,那这两个到底有什么区别呢? memcpy和strcpy不同的是memcpy是一个按字符串拷贝的函数,因此传进来的第三个参数就是你要拷贝的字符串个数了 void *my_memcpy(void *det, const v原创 2018-01-06 23:20:20 · 809 阅读 · 1 评论 -
模仿 qsort 的功能实现一个通用的冒泡排序
模仿 qsort 的功能实现一个通用的冒泡排序 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>#include<stdlib.h>int cmp(const void *m, const void *n){return *(char *)m - *(char *)n;}v...原创 2018-03-22 21:06:33 · 589 阅读 · 0 评论 -
从尾到头打印链表,逆置链表,链表pos位置删除元素,链表pos位置前插入一个元素
从尾到头打印单链表 删除一个无头单链表的非尾节点(不能遍历链表) 在无头单链表的一个节点前插入一个节点(不能遍历链表) 逆置/反转单链表原创 2018-03-30 01:46:07 · 1612 阅读 · 0 评论 -
二分查找的递归实现
#define _CRT_SECURE_NO_WARNINGS 1 #include #include int BinarySearch(int a[],int left,int right, int n){int mid = 0;mid =(right + left) / 2;if (left <= right){ if (a[mid]原创 2018-03-24 13:51:36 · 300 阅读 · 0 评论 -
复杂链表的复制
复杂链表的复制。一个链表的每个节点,有一个指向next指针指向 下一个节点,还有一个random指针指向这个链表中的一个随机节点 或者NULL,现在要求实现复制这个链表,返回复制后的新链表。原创 2018-04-07 22:09:28 · 941 阅读 · 0 评论 -
单链表的冒泡排序
大家之前都对数组进行过冒泡排序,排序的方式很简单,通过两个for循环来解决问题,也很好理解,第一次循环的时候是将整个数组中最大的数字或者说最小的数字放到数组中的最后一个,之后是将数组中第二大或者第二小的放到数组中倒数第二个,所以直接将这个思想放到链表中就可以了。 每次循环都是从头结点开始,但是第一次结尾是最后一个元素,第二次结尾是倒数第二个元素,这里是一样的,但是链表你是不确定他到底有多少个原创 2018-03-30 23:40:45 · 3558 阅读 · 1 评论 -
斐波那契数列的递归和非递归实现
#define _CRT_SECURE_NO_WARNINGS 1 #include#include int main(){int a = 1;int b = 1;int c = 0;int n = 0;int i = 0;printf("请输入你想要计算的斐波那契数字个数\n");scanf("%d", &n);printf("%3d原创 2018-03-25 21:06:49 · 810 阅读 · 0 评论 -
合并两个有序链表,合并后依然有序
合并两个有序链表合并之后还是有序的,首先这两个链表是需要是有序的,也就是说这两个链表已经排好序了,才能进行合并。但是昨天也写过冒泡排序的程序了,如果让你合并两个不是有序的链表合并之后有序,那可以先将两个链表进行冒泡排序再进行合并就可以了。 首先明确思路,合并两个链表有两种方式,第一种就是创建一个新的链表,不断的将原来两个链表的数据接入新的链表,但是还有另外一种方式就是在原来两个链表上进行操作,原创 2018-03-31 23:45:14 · 1840 阅读 · 0 评论 -
网页版Github简单操作
网页版github使用教程、网页版github怎么上传文件夹原创 2018-04-08 17:47:48 · 69872 阅读 · 10 评论 -
查找单链表的中间节点,要求只能遍历一次链表
今天写的函数是查找单链表中的中间节点,但是要求只能遍历一遍,如果不是这个条件来限制的话,可以先将链表遍历一遍,然后通过计数器来计算链表中的数据个数然后通过循环来找中间的结点,但是要求只能遍历一遍也就是说你在知道这个链表中有多少个数据的同时就要知道他的中间数据是哪一个。 这样的话就不能通过刚刚所说的方法来实现,但是刚刚也提到了如果你在知道总共有多少个元素的同时知道他中间元素是哪一个就可以了,也就...原创 2018-04-01 21:53:57 · 1378 阅读 · 0 评论 -
vs编译出现未加载 wntdll.pdb
今天在编写程序的时候在编译的过程中出现了一个对话框提示程序已经出现一个断点,然后跳转界面提示未加载 wntdll.pdb,或者说很多vs版本在编译的时候经常会出现无法查找或打开 PDB 文件。“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。“ConsoleApplic原创 2018-03-26 21:51:29 · 49446 阅读 · 19 评论 -
元素出栈、入栈顺序的合法性。
元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为 (4,5,3,2,1) Inarr代表你的输入顺序,也就是你的入栈顺序,outarr就是输出顺序也就是你的出栈顺序。这里纯说思想感觉不容易理解,结合程序给大家介绍一下。void Check(int inarr[], int outarr[], int n, Stack *s1){int x = 0;int y= 0;w...原创 2018-04-14 12:32:39 · 1050 阅读 · 0 评论 -
栈和队列迷宫问题
#define N 6 int maze[N][N] = { {0,0,0,0,0,0}, {0,0,1,1,1,0}, {0,0,1,0,1,0}, {0,0,1,1,1,0}, {0,0,1,0,1,1}, {0,0,1,0,0,0}, }; 通过一个数字来创造一个6*6的迷宫,其中0代表墙,1代表能够走的路。 这里将数组通过画图软件画出来,这里红色的1代表迷宫的入口,绿色的1代表迷宫的出口。...原创 2018-04-09 22:26:08 · 3243 阅读 · 0 评论 -
查找单链表的倒数第k个节点,要求只能遍历一次链表
查找单链表的倒数第k个节点,要求只能遍历一次链表,这里和之前所写的查找中间节点是一样的道理还是利用快慢指针问题来进行操作,但是这次和上次有一些小小的不同,这里是先让fast快指针先进行走K步,然后快慢指针同时走当fast指针走到最后的时候慢指针就停在了倒数第K位置。查找单链表的倒数第k个节点,要求只能遍历一次链表,这里和之前所写的查找中间节点是一样的道理还是利用快慢指针问题来进行操作,但是这次和上...原创 2018-04-02 21:35:31 · 1039 阅读 · 0 评论 -
二叉树的基本操作
在学习数据结构的时候学完栈、队列之后下一个比较难、比较重要的就是树。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。这是百度的一个词条介绍,一点都不...原创 2018-04-15 19:22:33 · 387 阅读 · 0 评论 -
单项链表的基本实现
#define _CRT_SECURE_NO_WARNINGS 1#include#include#includetypedef int DataType;typedef struct SListNode{struct SListNode* _next;DataType _data;}SListNode;SListNo原创 2018-03-27 22:31:59 · 284 阅读 · 0 评论 -
实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间 复杂度为O(1)
实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间 复杂度为O(1) 其实找到这个栈的最小值并不难,难的是让返回最小值的复杂度为0(1)也就是说我什么时候想要这个栈中的最小数的你不需要遍历栈直接就可以返回给我。 其实这种题有两种思路,第一种是创建两个栈,用两个栈来实现,其中一个栈就是正常存放你的数据,另一个栈就是用来存放你的栈中所有元素的最小值。 正常栈入的第一个元...原创 2018-04-10 21:22:24 · 1276 阅读 · 0 评论 -
判断单链表是否带环?若带环,求环的长度?求环的入口点?并计算
void SListIsCycle(SListNode* list){assert(list);SListNode *fast = list;SListNode *slow = list;SListNode *entry=list;SListNode *meet = NULL;DataType count = 0;fast = fast->_next->...原创 2018-04-03 23:14:13 · 604 阅读 · 0 评论 -
二叉树的层序遍历
之前写过二叉树的先序、中序、后序遍历,今天给大家介绍一下二叉树的层序遍历。二叉树的层序遍历 层序遍历也很好理解,一层一层的将你的二叉树遍历后输出。根据这个图输出顺序也就是125346. 上一篇文章也说了,二叉树的操作大多是通过递归来实现的,如果还按你以前的顺序你会遍历1,2,3,4这样下去,但是你现在又不能输出,那要怎么办?最早我的想法是用一个栈存起来,我让二叉树后序遍历,然后将这些遍历过得顺序...原创 2018-04-16 23:43:54 · 1850 阅读 · 0 评论 -
判断两个链表是否相交,若相交,求交点。(假设链表不带环)
int SListIsCrossNode(SListNode* list1, SListNode* list2){SListNode *L1 = list1;SListNode *L2 = list2;DataType n1 = 0;DataType n2 = 0;DataType n = 0;while (L1){n1++;L1 = L1->_nex...原创 2018-04-04 11:59:48 · 609 阅读 · 0 评论 -
双向链表的实现
#define _CRT_SECURE_NO_WARNINGS 1 #include#include#include typedef int DataType; typedef struct DListNode{struct DListNode* _next;struct DListNode* _prev;DataType _data;}DLis原创 2018-03-28 22:59:56 · 373 阅读 · 0 评论 -
求二叉树深度以及寻找二叉树中某一节点值
size_t BTreeDepth(BTNode* root) BTNode* BTreeFind(BTNode* root, BTDataType x) 求二叉树的深度依然用的是二叉树递归的特性。二叉树的深度就是你根节点的这一层加上他左孩子或者右孩子中深度大的哪一个,同样这也能被划分为子问题。 size_t BTreeDepth(BTNode* root){if (root == NULL)return 0;if (BTreeDepth(root->_left) >原创 2018-04-17 14:34:51 · 4818 阅读 · 0 评论 -
使用两个栈实现一个队列
大家都知道,栈和队列是两种不同的数据结构,栈是只能在栈顶对数据进行操作,队列是一个在队尾插入元素,在队头删除元素的数据结构。其实最通俗的一点这两个的区别就是,栈是先进后出,而队列是先进先出。 今天要解决的问题是,用两个栈来实现一个队列。 两个栈分别来实现不同的功能,S1用来做队的队尾,专门用来将元素入队,S2则是用来做队的队头,专门用来出元素。 入的话就是直接在S1中入元素原创 2018-04-11 21:22:19 · 656 阅读 · 0 评论 -
求两个已排序单链表中相同的数据。
void UnionSet(SListNode* l1, SListNode* l2){ assert(l1 || l2);while ((l1!=NULL)&&(l2!=NULL)){ if (l1->_data == l2->_data){printf("%d\n", l1->_data);l1 = l1->_ne...原创 2018-04-05 20:34:59 · 1271 阅读 · 0 评论 -
一个数组实现两个栈(共享栈)
一个数组实现两个栈,既然是一个数组变成两个栈,首先得把你的数组分成两部分, 这是一个十个元素的数组,有几种方法把他分成两部分呢?这么分! 还是这么分! 或者这么分!言归正传,其实分成两部分还是有两种分发的,第一种就是我上边画的第三种从中间开始分,将你的数组分成两个,分别成为一个栈。但是还有一种分发,是比较不容易想到的,那就是将你的数据的数据进行奇偶分开。 下标是红色的是一个栈,绿色的是另外一个栈...原创 2018-04-12 15:22:40 · 2208 阅读 · 0 评论 -
单链表实现约瑟夫环问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。今天我是需要做的是通过函数来计算约瑟夫环中的最后那个数是什么。其实这里不过是需要一个成环的单链表,然后通过循环不断的找到第m个数然后将第m个数删原创 2018-04-21 23:13:05 · 1251 阅读 · 0 评论 -
判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】
这个图是两个链表的六种状态第一种是最常见见也是最简单的状态,两个不带环单链表并且两个链表不相交。第二种是两个不带环单链表在半路相交了,之前也写过判断两个链表是否相交的函数,第三种是一个链表带环一个链表不带环,但是两个链表不想交,第四种是两个链表都带环,但是彼此不相交,第五种是一个带环一个不带环,两个相交但是相交位置是在带环链表的环外,第六种就是最复杂的一种,一个链表带环一个不带环,两个链表相交,但...原创 2018-04-06 13:13:41 · 665 阅读 · 0 评论 -
二叉树的先序、中序非递归遍历
之前写过二叉树的递归遍历的三种情况,很简单的讲解,很简单的代码就能实现,因为二叉树的很多操作都基于二叉树这个自然的递归情况,所以操作起来十分简单。但是我们今天还是要介绍一下二叉树的非递归遍历,为什么还要写这个更复杂的非递归遍历呢?其实这个大家也应该都清楚啊,递归的优点和缺点,如果你的树足够大的话,一直递归下去怎么办?栈的空间通常也只有几兆大小而已,总有一天会用完,所以就需要通过非递归的方式来解决这原创 2018-04-22 23:50:06 · 654 阅读 · 0 评论 -
两个队列实现一个栈
之前写过通过两个栈来实现一个队列的情况,今天是两个队列实现一个栈,其实还是之前说的,队列和栈的区别还是本质上的对数据操作的区别,栈是只能在栈顶位置进行操作,队则是队尾插入元素,队头删除元素。 这是两个队。还是同样选取其中一个队当做入数据的,因为栈是先进后出,所以当你入数据的队列完成入数据的时候,如果想出就需要借用Q2队列, 依次入四个元素1、2、3、4,这时候如果想出元素的话,要出原创 2018-04-13 12:22:11 · 451 阅读 · 0 评论