自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 递归实现八皇后问题

递归实现八皇后问题八皇后问题思路分析代码实现代码分析八皇后问题在8*8的棋盘上摆放八个皇后,使任意两个皇后不处于同一行、同一列或同一斜线上,问有几种摆法?思路分析把第一个皇后放在第一行第一列第二个放在第二行第一列,判断该位置是否和要求冲突,冲突则将其放在第二行第二列、第三列,直到找到符合要求的位置继续放置第三个,同样一列一列的找到合适的位置,当八个皇后都放置好了位置,就得到一个正解得到正解时,当回退到上一个栈时就会开始回溯,回溯回第一个皇后所在位置时,会将第一个皇后在第一行第一列的所有正

2021-02-23 23:15:04 108

原创 栈的前缀_中缀_后缀表达式

前缀_中缀_后缀表达式栈的前缀_中缀_后缀表达式三种表达式转换方法前缀、后缀表达式原理的计算器求值中缀转后缀表达式代码实现思路代码实现后缀表达式实现简易整数计算器思想代码实现栈的前缀_中缀_后缀表达式三种表达式前缀表达式,又称为波兰式,在前缀表达式中,运算符位于操作数之前。例如(3+4)*5-6,其前缀表达式为:- *+3456中缀表达式即我们人类日常使用的数学运算后缀表达式,又称为逆波兰表达式,在后缀表达式中,运算符位于操作数之后。例如(3+4)*5-6,其后缀表达式为:34+5 *6-

2021-02-22 18:07:55 681

原创 Java数据结构之栈

Java数据结构之数组模拟栈栈是什么数组模拟栈思想代码实现栈是什么栈又名堆栈,是一种运算受限的线性表。仅限在表尾进行插入和删除操作的线性表,这一端被称为栈顶,而另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。百度百科数组模拟栈思想定义一个top表示栈顶,初始化其值为-1入栈,当有数据入栈时,top上移指向没有数据的位置top++;s

2021-02-21 16:22:41 85

原创 Java单向环形链表解决约瑟夫环问题

单向环形链表解决约瑟夫环问题约瑟夫环问题问题解决思路代码约瑟夫环问题有1~n个人围坐成一个圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出圈,出圈的那个人的后一个人又重新从1开始报数,下一次数到m的那个人出圈,以此类推,直到所有的人都出圈为止,由此产生一个出圈的编号序列。问题解决思路用不带头节点的单向链表处理,构造一个有n个节点的单链表,然后让第n个节点的next指向第一个节点,从而构成一个单向循环链表。然后由第k个节点起从1开始计数,数到m时,对应的节点从链

2021-02-21 11:19:24 124

原创 Java数据结构之双向链表

Java数据结构之双向链表什么是双向链表双向链表增删改查添加节点遍历链表修改结点数据删除节点完整代码什么是双向链表结构类似于单向链表,但是每个节点多了一个pre用于指向前一个结点,这样的特性使得双向链表可以向前或者向后查找节点,而单链表的查找只能有向一个方向查找。单链表笔记其逻辑结构如下图双向链表增删改查添加节点添加节点的操作和单链表差不多,但是除了链表最后一个节点的next指向新节点外,增加了一个新节点的pre指向前一个结点的操作。代码如下// 直接插入到链表尾部 publ

2021-02-21 09:37:55 69

原创 Java数据结构之单向链表

Java数据结构之单向链表链表介绍单链表的增删改查查增直接插入按顺序号插入删改链表介绍单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。在内存中的存储方式如下图逻辑结构则如下图单链表的增删改查用带head的单链表举例说明单链表的增删改查,首先创建一个Node类,用于创建节点class Node{ private int no; private String data; private Node next; public Nod

2021-02-19 23:43:20 145

原创 Java数据结构之数组模拟队列

Java数据结构之数组模拟队列什么是队列用数组模拟队列思想代码实现数组模拟环形队列什么是队列1、队列是一个有序列表,可以用数组或者链表实现2、遵循先进先出的原则。即先存入队列的数据先取出,后存入的数据后取出3、允许插入数据的一端称为队尾,允许取出数据的一端称为队头用数组模拟队列思想1)队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如上图。2)因为队列的输出输入是分别从前后两端来处理的,因此需要两个变量front和rear来分别记录队列前后两端的下标。front随数据

2021-02-19 16:46:49 93

原创 Java数据结构之稀疏数组

Java数据结构之稀疏数组什么是稀疏数组原理稀疏数组和二维数组的转换二维数组转稀疏数组代码实现稀疏数组转二维数组代码实现稀疏数组保存到硬盘从硬盘取出稀疏数组什么是稀疏数组稀疏数组可以用来保存大部分元素为0或者为同一个值的数组。原理1、记录二维数组一共有几行几列,有多少个值2、将各个值的行位置、列位置和数据记录在一个小规模的数组中(这个数组就是稀疏数组),从而缩小程序规模。二维数组0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0

2021-02-18 16:08:46 57

原创 关于C语言学习的错误与收获(8)

1写一个函数,输入一串字符,要求输出的字符串,两两之间有空格隔开。定义一个插入函数,入口参数和出口参数均为str字符数组。调用strlen函数统计由主函数输入的字符的个数,然后通过2个赋值表达式将该位置上的字符赋给“2i”的位置,空格赋给“2i-1”的位置上,遍历完str字符数组后,输出插入空格后的字符数组。2用递归法将1个整数n转化为字符串。在主函数中,通过输入函数,将数据输...

2019-01-03 16:45:44 137

原创 关于C语言的学习的问题与收获(7)

1用“*”打印出一个2个关于x轴对称的平行四边形首先定义i,j,k,利用for循环进行输出,i表示行数,再用j控制空格的输出,然后再控制“”的输出。在该代码中,每行的首端的空格都比前一行首段的空格要少1个,而该平行四边形共5行,所以依靠第二个for循的“for(j=0;j&amp;lt;=i-1;j++)”控制每行首端的空格数,再以“for(k=i;k&amp;lt;i+5;k++)”控制输出“”和空格,然...

2018-12-27 22:37:17 351

原创 关于C语言的学习的问题与收获(6)

1给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。代码:题目要求所有的数字除目标外均出现2次,所以强制定义变量N的值为7。令k=0,利用for循环输入数据,利用三个for循环语句对数组进行“扫描”,第二个和第三个for则对除本数据以外的前后元素进行“扫描”,查看是否有和本元素中的数据相同的,有则令k=1,无则结束循环,接着利用if语句...

2018-12-20 15:33:35 543

原创 关于C语言学习的问题与收获(5)

1输出二维数组的有关数据这个代码本身很简单,但是却很有利于我们理解指针应用多维数组。如数组名a,表示指向一维数组a[0],也就是0行的起始地址。(a+1)就是a[1],而a[1]是唯一数组名,也是地址,指向a[1][0],所以a[1]为1行0列的元素的值。两者都是二维数组元素a[1][0]的不同表示形式。a[1][0]如果加上“&amp;amp;amp;”,输出则得到元素a[1][0]的地址。a+1是二...

2018-12-13 23:42:27 153

原创 关于C语言学习的问题与收获(4)

1二分查找:已知一个有序数组,判断给定的数据x是否在该数组中,在返回该数在数组中的位置,不在返回-1。(使用函数)在search函数中使用while语句,x的数值要大于等于第一个数据小于等于最后一个数据,并加上一个判断条件,k=-1即为未找到数据,找到了则输出其位置。初始定义j=n-1和i=0及后面的i=r+1,表示每次使用二分法以后x可能所在数据区间的最后一位数据或第一位数据,while语...

2018-12-06 13:44:50 220

原创 关于C语言学习的问题与收获(3)

1用二分法判断在一个有序数组中是有给定的数据x,若在该数组中,则给出位置,不在位置为-1。代码如下:这段代码使用二分法寻找目标数据,相比冒泡法代码更长,但寻找速度更快,如果不用二分法,代码如下:在二分法中使用while语句,x的数值要大于等于第一个数据小于等于最后一个数据,并加上一个判断条件,k=-1即为未找到数据,找到了则输出其位置。初始定义l=n-1和r=0及后面的r=t+1,表示...

2018-11-29 15:16:43 693

原创 关于C语言学习的问题与收获(2)

1随机取10个数,输出最小值代码如下:需要关注的:a[i]=(int)(rand()%90+10);rand()函数用于产生随机数,因此要使用它,则必须定义头文件#include&lt;stdlib.h&gt;,“()”中的时筛选条件,“%90+10”意为对90取余得到0-89的数据,再+10,生成10-99的随机数,(int)强制生成的随机数为整型数据。筛选出的数据再通过for循环...

2018-11-22 21:31:55 557

原创 关于C语言学习的问题与收获(1)

1用数组输入10个整数再存储,然后逆序输出。一般听到这个大概会敲出如下代码然后得出结果但这是不对的,因为没有经过存储的过程,这个代码不过是将数据逆序输出。正确做法如下:输入数据后,将数据存放在数组中,再进行首尾顺序调换,由于2个数之间进行两两互换,因而在进行数据存放及逆序时,只需要执行for循环体5次,而后再以for语句输出逆序的数字。2输入两个数据n和m,计算它们的乘积o,再进...

2018-11-15 23:29:32 299

原创 关于scanf,你应该知道

在C语言中,除了printf函数用的最多以外,用的第二多的或许就是scanf函数了,不能说是所有代码都必须用到的,但至少大部分的代码都需要我们的scanf函数。如果说你的代码是个复杂的机器,printf函数是这个机器的出货口,那么scanf函数就是这个机器的进货口,是这个复杂机器必定不可缺少的一部分。作为一个输入函数,scanf函数后面的括号包括了两部分内容,一是双撇号里的内容,它指定输入的数据...

2018-11-08 16:14:59 496

空空如也

空空如也

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

TA关注的人

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