自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构之队列知识与习题练习

目录1.队列概念2.基本方法和简单使用2.1.基本方法2.2.简单使用3.模拟实现与应用场景3.1.各种实现方式分析3.2.简单实现(含有尾指针的单向链表)3.3.应用场景3.3.1.循环队列3.3.2.用栈实现队列3.3.3.用队列实现栈3.3.4.最小元素栈3.3.5.特定时间范围内最近的请求1.队列概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点。入队列:进行插入操作的一端称为...

2022-04-04 21:58:47 1434

原创 数据结构之栈的基本知识与习题

目录1.有关概念2.基本方法和使用场景2.1.方法2.2.使用2.3.应用场景2.3.1.改变元素的序列2.3.2.逆序打印链表2.3.3.oj题括号匹配2.3.4.逆波兰式求值2.3.5.栈的弹出序列3.栈的简单实现(数组实现)4.有关栈的概念区分1.有关概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 ...

2022-04-03 22:48:02 1068

原创 链表必刷题之二

1.编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 。public ListNode partition(ListNode pHead, int x) { ListNode bs = null; ListNode be = null; ListNode as = null; ListNode ae = null; ListNode cur = pHead; whil

2022-03-22 16:40:49 364

原创 链表必刷题之一

1.给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。public ListNode reverseList(ListNode head) { if(head == null) { return null; } if(head.next == null) { return head; } //两个节点以上 ListNode cur = head

2022-03-22 16:17:16 537

原创 数据结构之LinkedList与链表

目录1.LinkedList的特点和存在意义2.LinkedList的简单使用2.1.LinkedList的构造2.2.常见方法2.3.遍历3.链表结构4.简单实现4.1单向无头不循环链表4.2.双向无头不循环链表5.ArrayList与LinkedList的不同1.LinkedList的特点和存在意义LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了...

2022-03-22 15:33:16 1706

原创 数据结构之ArrayList与顺序表

ArrayList是一个实现List接口的类,底层是动态类型顺序表,本质也就是数组,动态主要体现在它的扩容机制。那么既然是底层是数组,那我们为什么不直接使用数组而是要使用ArrayList类呢?1.假设我们有这样一个数组:我们要计算数组有效元素个数,但我们是否可以知道有效的数据?如果是纯数组,0并不是有效数据,但是如果我们有效数据就是0,就无法单靠数组解决了,而定义顺序表,其中会定义size变量,用于有效数据的使用。当然,顺序表还定义了其他方法(增...

2022-03-16 21:33:17 123

原创 Iterable、Collection、List 的常见方法签名以及含义

这是数据结构集合的有关类和接口的关系图,弄清集合关系,这一张图就够了。下面我们先来了解一下iterable、collection、list三个接口的主要功能和常用的方法:Iterable接口:集合框架最顶端的接口,实现接口的遍历。迭代器接口可进行迭代的接口iterator()这个方法返回的是Iterator的实例。Iterator也是一个接口,为什么不将两个接口合并为一个接口,这样不是更简洁更方便吗?...

2022-03-14 21:39:20 418

原创 一起了解JavaSE基本语法

我将javase需要学的基本语法整理成一张框架图 ,供大家参考学习。

2022-03-06 21:15:37 151

原创 java有关string字符串编程习题

1.一个字符串最后一个单词的长度(字符串单词之间为空格,结尾不为空格) //最后一个单词的长度 //方法1 public static void main1(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { // 注意 while 处理多个 case String str = in.nextLine();

2022-03-04 19:46:22 676

原创 java实现图书管理系统之一

学习了java的有关面向对象编程思想的语法后,为了将类和对象、封装、继承、多态、抽象类、接口融会贯通,我实现了图书管理系统,供小白参考学习和大佬指正。本文主要讲解的是该系统的逻辑框架,具体业务逻辑的实现和源代码见第二篇文章:http://t.csdn.cn/q6aT6http://t.csdn.cn/q6aT6我将程序分成三类对象,第一类对象是图书Book和书架BookList,主要应用的是类的实例化、构造方法、成员访问权限的知识。单本图书信息...

2022-03-01 23:07:42 253

原创 java实现图书管理系统之二

主函数Main(登录系统和菜单的多态体现):import book.BookList;import user.AdminUser;import user.NormalUser;import user.User;import java.util.Scanner;public class Main { public static User login() { System.out.println("请输入姓名:"); Scanner scanner

2022-03-01 23:02:14 255

原创 关于final、finally和finalize我有话要说

finalfinal关键字用于修饰类、方法、变量。1.当修饰类时表示类不可被继承,主要用于考虑类的安全性问题上。需注意,一个final类其中的成员方法成员方法都会隐式被定义为final方法。2.当修饰方法时表示方法不能被重写,子类可以继承,但是不能对其重写修改。3.当修饰变量时表示变量为常量,即只能在初始化时显式赋值一次,不能被重新赋值。finally多用于try-catch异常捕获中最后的资源释放,这里会有人认为finally语句一定会被执行到,我们来看下面的代码 ://1.

2022-03-01 15:35:11 202

原创 动态内存管理经典习题

#include<stdio.h>#include<stdlib.h>void GetMemory(char* p) { p = (char*)malloc(100);}int main() { char* str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str); return 0;}上述代码运行会产生什么结果?可以看到程序引发异常,原因就是因为mal...

2022-02-25 21:51:48 465

原创 面向对象程序设计思维

作为java一个重要的编程思维,面向对象有着和面向过程同等重要的地位,首先我能来通过一个例子了解一下两种思维的不同。就比如把大象放到冰箱这个经典的问题,面向过程的思维就是三步,1.把冰箱门打开2.把大象放到冰箱里3.关上冰箱门。面向对象的思维就是:1.定义一个大象对象2.定义一个冰箱对象3.定义一个手对象,通过对象与对象之间的交互完成问题,至于手是如何把冰箱打开的,我们并不关心。两种思维方式没有好坏之分,对应不同的应用场景有各自的优势。因此类和对象...

2022-02-23 20:16:28 522

原创 C语言模拟实现memcpy函数

void * memcpy ( void * destination, const void * source, size_t num ); 该函数是内存操作的拷贝函数,函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置,在遇到 '\0' 的时候并不会停下来。同时该函数的返回类型和参数类型为void*,这也就说明了该函数的业务逻辑不仅仅可以对字符串进行拷贝,还可以对其他数据类型进行拷贝,这就是它与strcpy函数最大的不同。...

2022-02-21 16:48:08 593

原创 C语言模拟实现strcmp函数

int strcmp ( const char * str1, const char * str2 ); 该函数主要是进行字符串的大小比较,比较思路为从字符串的第一个字符开始逐字符根据字符的ascll值大小进行比较,如果相同位置的字符值大,则该字符串大。相关标准规定:第一个字符串大于第二个字符串,则返回大于0的数字 第一个字符串等于第二个字符串,则返回0 第一个字符串小于第二个字符串,则返回小于0的数字模拟实现:思路过程就是,将相同指针位置的字符相减,实际为ascll值相减,根据结

2022-02-21 16:06:50 394

原创 C语言模拟实现strstr函数

2022-02-21 15:59:34 287

原创 C语言模拟实现strcat函数

char * strcat ( char * destination, const char * source );strcat函数主要是进行字符串拼接功能的,需注意字符串必须以 '\0' 结束,目标空间必须有足够的大,能容纳下源字符串的内容,目标空间必须可修改。 模拟实现://模拟实现strcatchar* my_strcat(char* str1, const char* str2){ assert(str1 != NULL); assert(str2 != NULL); ch.

2022-02-21 15:38:44 597

原创 C语言模拟实现strcpy函数

strcpy函数功能:char* strcpy(char * destination, const char * source);该函数是进行字符串拷贝的,同样需注意字符串的结束标志‘\0’,同时函数也会将‘\0’拷贝进目标空间,而且目标空间必须保持可变和空间足够放入原字符串。模拟实现://模拟实现strcpychar* my_strcpy(char* str1, const char* str2) { assert(str1 != NULL); assert(str2 != N

2022-02-21 15:34:20 328

原创 C语言模拟实现strlen函数

在实现之前,我们先来了解一下strlen函数的原理size_t strlen ( const char * str );该函数是进行字符串的字符个数进行计数的。需要注意以下3点:1.字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。 2.参数指向的字符串必须要以 '\0' 结束。 3.函数的返回值为size_t,是无符号的//模拟strlen//方法1(计数器)int my_strlen1(co

2022-02-21 15:25:11 277

原创 有关指针与数组的习题练习

char* c[] = { "ENTER","NEW","POINT","FIRST" };char** cp[] = { c + 3,c + 2,c + 1,c };char*** cpp = cp;printf("%s\n", **++cpp);//"POINT",注意运行结束此时cpp指向cp[1]printf("%s\n", *--* ++cpp + 3);//"ER",++优先级高,先执行*--*++cpp,再执行c[0]+3,此时cpp指向cp[2]printf("%s\n", .

2022-01-30 20:42:35 1083

原创 辨析数组指针和指针数组

今天在进阶更高级指针的运用时,一开始没有分清数组指针和指针数组,我相信初学者也经常被这两个问题困扰,学过之后我来总结一下这其中的细节,供大家参考。指针数组:本质是数组,内部存放的是指针元素,比如int *p1[10]; 就是一个整形指针的数组。数组指针:本质是指针,指针指向的是数组,比如int(*p2)[10]; 就是一个数组指针,指针指向整形数组。这里有个口诀教大家辨别变量类型,变量先和谁结合,就是谁。[]的优先级高于*,因此定...

2022-01-26 21:13:52 726

原创 关于整形提升和数据存储之间不可告人的秘密

在学习C语言的过程中,也许大家都会遇到很多char类型数据和int类型数据打交道的,新手在处理时往往会忽视运算符的规则,表面上程序跑对了,背地里啥也不懂,当程序出bug时又一头雾水,今天我就来给大家揭开关于数据的神秘面纱。 有些表达式的操作数在求值的过程中可能需要有自身类型转换为其他类型。这期间就会发生隐式类型转化。C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。 ...

2022-01-24 02:22:38 346

原创 关于VS2019中对scanf的报错问题

scanf报错在是VS2019独有的,运行会显示是不安全,可以选择使用scanf_s替换,但是并不推荐使用scanf_s替换,这个是vs特有的,并不适合其他编译器,所以在代码跨编译器运行时会出错,下面有两种解决方法:第一种在源文件第一行输入下面的代码:#define _CRT_SECURE_NO_WARNINGS第二种方式是使用这行代码忽视错误:#pragma warning(disable:4996)还有其他好的建议欢迎码友们提出!...

2021-11-20 17:28:02 799

原创 关于头文件和头文件分文件处理

在vs2019中,如果用普通的方式即#include<>来写头文件,当头文件调用过多是会使程序文件显得赘余,今天在练习习题的时候,学到一种分文件处理,这是一种很好的处理方式。第一步创建头文件 在头文件选择新建项,然后选择上图的头文件,名称要和源文件的文件名称一致,后缀为.h表示这是头文件。第二步定义自己的头文件按照上图格式,定义头文件,注意文件名大写和后缀_H,在其中即可写自己所需的头文件引用、宏定义和变量及函数的声明。第三步在源文件导入定义的...

2021-11-20 17:17:10 1007

原创 初学编程之心境路程

我是一名平平无奇的初级程序员,从开始学习编程到现在不到3个月的时间,但是就是这短短的不到3个月的时间,让我彻底爱上了编程。 在我一个大二学生看来,程序语言更像一门语言艺术,我想学会和机器沟通,写出酷炫的代码,让我这个平平无奇的程序员也能变得出众,这就是我学习编程的初心。可是编程是个很笼统的概念,该怎么对这块难啃的硬骨头下手呢?经过很长一段时间的思考和研究,我决定先从编程语言的“母语”——C语言下手,来向这个强大的体系展示我不屈的意志。当然要想写出好的代码,就得经历岁月的沉淀,俗话...

2021-11-10 20:47:52 913

空空如也

空空如也

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

TA关注的人

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