自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lemon_sj的博客

编程之路的探索

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

原创 调整数组顺序使奇数位于偶数前面

方法一:分析:要使得奇数全位于偶数前面,我们需要定义两个变量left和right,left从数组的0好下标开始往后遍历,right从数组的最后一个元素开始遍历,只有当left下标的元素为偶数并且right下标的元素为奇数时,我们才交换这两个元素,由此可见,无论是由left下标去寻找偶数还是由right下标去寻找奇数,我们都在循环里去寻找,找不到的话left往后移,right往前移,代码如下:public static void main(String[] args) { int[] array

2020-11-08 23:08:01 831

原创 汉诺塔问题

汉诺塔问题是一个经典的问题。汉诺塔(HanoiTower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?分析:从上面的图中可以看出当N = 1时,我们只需要将A上的盘子挪到C上;当N 》= 2时,首先我们需要将N-1个盘子从A经过C挪到B上,然后将地N个盘.

2020-10-16 16:44:27 560

原创 单例模式之饿汉,懒汉

一、饿汉模式当类被加载时,静态变量instance就会被初始化,此时类的私有构造函数会被调用,单例类的唯一实例将被创建,不会出现创造多个单例对象的情况,可确保单例对象的唯一性,在单线程和多线程的情况下都可以保证正确性。1)单线程public class 单例模式之饿汉 { //一开始就初始化 private static 单例模式之饿汉 instace = new 单例模式之...

2020-03-19 14:10:02 215

原创 Comparable和Cloneable接口的使用

(一)Comparable接口public interface Comparable<T>参数类型 :T - 可以将此对象与之进行比较的对象类型该接口对实现它的每个类的对象强加一个整体排序。 这个排序被称为类的自然排序 ,类的compareTo方法被称为其自然比较方法Collections.sort (和Arrays.sort )可以自动对实现此接口的对象进行列表...

2019-11-28 16:54:52 454

原创 删除双向链表中第一个值为key的结点

分析:双向链表的图如下所示:首先我们定义一个变量 cur 去遍历数组,当 cur.data = key的时候,我们就要分情况讨论了我们先判断cur是不是头节点,如果是则执行相应的操作删掉Key如果不是头节点,那么cur就只能是中间结点或者尾结点了。具体的代码实现如下:public void remove(int key){ ListNode cur = this.head;...

2019-11-24 19:53:52 511

原创 给定一个链表,返回链表开始入环的第一个节点

分析:A : 链表的头节点B :链表开始入环的第一个节点C :fast 和 slow 相遇的点如下图,我们设AB = X, BC = L, 因为,fast 的速度是 slow 的二倍,所以我们可以得到等式 2(X + L) = X + L + nC, 化简可得 X = nC - L, 由于 n 是 fast 走了n 圈和slow 相遇, c表示环的长度,我们可以得到 nC值是恒定的,n ...

2019-11-23 21:55:04 490

原创 面向对象编程(二)~ 多态,抽象类, 接口

一、多态<1>向上转型父类引用,引用子类的对象—》向上转型Animal animal = new Animal("xaiohua");父类引用 --》只能调用父类自己的方法或者访问自己的属性向上转型的时机:直接赋值 、 参数传递 、 方法返回值<2>向下转型向下转型的前提条件:父类已经引用了子类(向下转型后的类型)的对象注意:在进行...

2019-11-23 16:44:07 273

原创 面向对象编程(一)~ 包,继承,组合

面向对象的三大特性: 封装 , 继承 和多态一、包(package)包实质就是一个文件夹(包名规范以小写形式)使用包的主要目的是保证类的唯一性.在同一路径下是不能同时生成两个.java文件的,但使用包就可以做到如何在命令框下编译包?javac comt\bit\TestDemo.javajava com.bit.TestDemo.java注意:这里必须在包下的文件里,添加代码:...

2019-11-22 20:09:49 149

原创 判断一个链表是否为回文结构(Java实现)

分析:什么是回文结构?一个链表的顺序和它反过来的顺序是一样的则是回文结构,否则不是。比如:1->2->3->2->1,链表结构反过来也是1->2->3->2->1,这就是回文结构,而1->2->3->2,反过来就是2->3->2->1,就不是回文结构因为链表是单向的,所以不能从两边同时往中间走,我们采取反转...

2019-11-20 20:19:30 219

原创 删除一个(已排序)链表中重复的结点

分析:首先我们并不知道一个链表的重复结点是哪个,所以我们需要定义一个变量去遍历链表链表是有序的,所以如果有重复的节点,一定是连在一起的而且重复的节点可能有多个,所以需要用循环定义一个cur去遍历数组,在cur不为空指针的条件下进行循环,判断cur.data 是否等于cur.next.data,如果不相等,则说明cur不是重复的节点,反之,它就是重复的结点,具体的实现我们通过代码来展示...

2019-11-20 18:45:52 141

原创 以给定值x为基准将链表分割成两部分

分析:题目要求将链表以x为基准分成两部分,但并不是真的将链表分成两个链表,同时在分割后,不能改变原先链表的顺序,具体分析步骤如下:首先我们定义一个cur去遍历链表的每一个节点,找出所有小于x的结点排在大于或等于x的结点之前这里我们就有两部分数据,一部分是小于x,另一部分是大于等于x,所以我们需要先重新定义两个链表,头和尾分别是bs,be和as,ae,将小于x的数据放在bs链表里,将大于等于...

2019-11-20 17:39:51 1623

原创 单链表~输入两个链表,找出它们的第一个公共结点

分析:首先,我们来分析一下题目,题目要求输入两个链表,那么我们要明白这两个链表可能是一样长,也有可能长短不一,如下图所示.如果两个链表相交且长度不一样,那么一定是在相交前长度不一样,由此,我们可以先分别定义一个lenA和lenB,分别遍历两个链表,求得lenA和lenBlen为lenA和lenB的差值,若lenA小于lenB,则用后者减去前者,然后遍历较长的链表,让其往后移len个长度然...

2019-11-20 00:08:02 293

原创 如何反转单链表

public ListNode reverseList() { ListNode prev = null; ListNode newHead = null; ListNode cur = this.head; while(cur != null) { ListNode curNext = cur.next; ...

2019-11-13 00:04:28 268

原创 删除链表中出现的所有关键字为Key的节点

在讲如何删除所有关键字为key的节点之前,我们先讲一下如何删除第一次出现关键字为key的节点删除第一次出现关键字为key的节点public ListNode searchPrev(int key) { ListNode cur = this.head; while(cur.next != null) { if(cur.next.data ...

2019-11-10 10:51:24 995

原创 JAVA之类和对象(二)

四、private的封装【private和public-------访问修饰限定符】1.封装的本质是让类的调用者不必了解类具体是如何实现的,会使用就行2.this是当前对象的引用静态方法内部不能使用this(代表当前类中生成对象的引用)3.给数据成员初始化的方法:提供一系列的get set方法构造方法的作用–》产生对象(方法名和类名相同,没有返回值)【如果程序没有提供任何...

2019-11-02 20:54:50 142

原创 JAVA之类和对象(一)

前言:java是一门面向对象的语言面向对象:注重对象,适用于小问题(C)面向过程:注重过程,适用于问题规模较大的(C++, Phython)

2019-11-02 18:54:22 145

原创 JAVA之数组的相关知识

1.数组的创建动态初始化数据类型[] 数组名 = new 数据类型 [] {初始化数据};静态初始化数据类型 [] 数组名 = {初始化数据};不初始化,默认值为0数据类型 [] 数组名 = new 数据类型[长度]注意:在进行动态初始化时,不能定义长度2.数组的使用数组的下标从0开始,下标访问的范围为[0~length-1],超出有效...

2019-10-20 20:09:59 381 3

原创 JAVA中的数据类型与运算符

~Java数据类型可分为两大类:基本类型和引用类型基本类型:基本类型包含数值型,字符型和boolean类型(一)数值型整型(int)在java中一个int变量占4个字节短整型(short)short占两个字节,取值范围(-2^15 ~ 2^15)长整型(long)long占8个字节,取值范围63(-2^63 ~ 2^)字节类型(byte)byte只占...

2019-10-15 23:01:54 192

原创 首次博客的撰写

这是我的第一篇博客,这只是一个开始。 大家好,我是一名电信工程专业的学生,很高兴来到CSDN博客论坛,虽然我现在的编程能力不高,但我会不断地去提高自己。 通过学习我希望每次都能很顺利的打出代码,能够用最简单的方式写出代码,最后还能用代码做出一些设计。 在学习的过程中,周内至少敲10小时的代码,在时间充裕的情况下尽可能多的去写代码,遇到较难的编程多去思考,空闲时间多阅读一些编程方面的书。 ...

2019-09-29 19:07:32 101

原创 十进制转换为二进制和十六进制

十进制转换为二进制:方法1:除二取余法每次将整数除以二,余数为该位上的权数,然后商继续除以二,余数为上一位权上的数,就这样一直除下去,直到商为0为止,最后读数时,从最后一个余数开始读,一直读到最前的的余数示例:123------ 0111 1011方法二:根据一个十进制数的组成写出其二进制,一个32位系统低八位的值分别是128,64,32,16,8,4,2,1.从大往小选择,选择可以...

2019-09-29 18:53:59 2573

原创 冯诺依曼体系结构

冯诺依曼体系结构:发展背景:1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法。半个多世纪以来,计算机制造技术发生了巨大变化,但冯· 诺依曼体系结构仍然沿用至今,人们总是把冯· 诺依曼称为"计算机鼻祖"。结构图:功能:把需要的程序和数据送至计算机中。必须具有长期记...

2019-09-27 17:57:20 891

原创 结构体的内存对齐

结构体的内存对齐规则:1.第一个成员在与结构体变量偏移量为0的地址处2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处对齐数 = 编译器默认的一个对齐数与该成员的较小值•VS中默认的值为8•Linux中的默认值为43.结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处, 结构体的整体大小就是...

2019-09-02 17:44:04 290

原创 C语言之memmove函数

memmove函数:void *memmove( void *dest, const void *src, size_t count );•和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的•当源内存首地址与目标内存首地址相同时,不进行拷贝•当源内存首地址大于目标内存首地址时,进行正向拷贝•当源内存首地址小于目标内存首地址时,进行反向拷贝模拟实现meme...

2019-08-30 15:52:42 1082

原创 c语言模拟实现strcpy和strncpy

模拟实现strcpy:strcpy(长度不受限制的字符串函数)char* strcpy(char* destination, const char* source);•源字符串必须以’\0’结束•目标空间必须足够大,能够容纳源字符串•能够将源字符串中的’\0’拷贝到目标空间•目标空间必须可变#include<stdio.h>#include<assert.h&g...

2019-08-26 15:07:35 159

原创 strlen和sizeof的用法和区别

strlen和sizeof的用法和区别:1.strlen是一个函数1) size_t strlen(const char * str)//strlen函数的参数是字符型指针(char *),返回值为 size_t,是无符号的2) 字符串以’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面出现的字符个数(不包含’\0’)3) 参数指向的字符串必须要以’\0’结束4)...

2019-08-24 21:44:27 356

原创 扫雷游戏(C语言实现)

扫雷游戏(C语言实现):1.函数头(game.h)#define ROW 9 #define COL 9#define ROWS ROW+2#define COLS COL+2#define Lcount 80#include<stdio.h>#include<stdlib.h>#include<time.h>void InitBoard...

2019-08-23 19:31:25 579

原创 三子棋代码的实现

三子棋游戏的代码实现1.函数头:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>#include<time.h>#include<stdlib.h>#define ROW 3#define COL 3void InitBoard(char b...

2019-08-16 22:36:07 140

原创 操作符的相关介绍

算术操作符取余操作符(%)的两个操作符必须为整数,返回整除后的余数移位(二进制位)操作符左移操作符 <<右移操作符 >>右移操作符的移位规则:{(1)、逻辑右移:左边用0填充,右边丢弃(2)、算术右移:左边用原值的符号位填充,右边丢弃}移位操作符有求平均的功能#define _CRT_SECURE_NO_WARNINGS 1#include&l...

2019-05-21 17:24:46 119

原创 求两个数的平均值的不同写法

求两个数的平均值的不同写法:<1>#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int main(){ int a = 0; int b = 0; float ave = 0.0; scanf("%d%d", &a, &b); ave...

2019-05-14 15:12:41 497

空空如也

空空如也

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

TA关注的人

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