- 博客(45)
- 收藏
- 关注
原创 求链表的相交节点
这种方法的方法就是先记录各个链表的长度,然后让长链表先走差值步,然后再同时走,直到走到其中相同的节点就是相交节点.当我们记录完链表的长度后我们能判断最后一个节点.如果最后一个节点不相同就代表不是最后一个节点.这个方法就是先将其中一个链表的全部都放在集合中.另外的一个链表从头开始遍历.第一个存在链表的节点就是相交的节点.我们了解一下求链表成环节点的题目.----->给定链表的头结点,返回链表的成环节点,没有返回null.请实现一函数,如果两个链表相交,请返回相交的一个节点,如果不相交,返回null.
2022-09-08 01:59:34
483
1
原创 random链表的深拷贝
给定一个Node 节点类型组成的无环链表的节点head ,请实现一个函数 完成这个函数完成这个链表的深拷贝,并返回复制新链表的头结点.random 指针是单链表节点结构中新增的指针,random可能指向链表的任意一个节点,也可能指向null.在一条链表上复制链表,调整好random 再进行分离.一种特殊的单链表节点类描述如下。要求时间复制度为O(N)空间复制度为O(N)
2022-09-04 03:54:52
401
原创 链表的荷兰国旗问题
1) 把链表放入数组中,在数组上做patition(使用容器)将单向链表按某值划分成左边小.中点相等,右边大的形式.链表问题还是可以有两种解法:(使用容器和不使用容器)2)分成小,中, 大 三大部分再分别串起来。不使用容器的策略就是分为将三个区域分开.使用容器的策略就是快排的形式。
2022-09-04 02:29:17
286
原创 回文链表的解法
节点个数为偶数的链表我们取上中点视为中点开始逆序,直到 前面的引用指向了null。首先我们要抓住中点就是--->分别从头遍历和从尾遍历,看看分别是否相等。首先栈的结构正好能够满足倒叙的要求.(或者放在数组中,从后往前遍历)节点3的next指向空,这样就能从前往后遍历,知道两个引用相等。然后逆序使链表变成这样: 1->2->32->3->4->5。
2022-09-04 01:49:22
385
原创 链表的边界
节点3 的下标就是2,那么我们符合我们这个下标的计算公式就是-->(N/2)或者((N-1)/2)首先我们的链表题目 都是分为两种,一种是使用容器,但是另外一种就是不使用容器的.问题二:输入链表头结点,奇数长度返回中点的前一个,偶数长度返回上节点的前一个。问题四:输入链表头结点,奇数长度返回中点的前一个,偶数长度返回下中点的前一个。问题一:输入链表头节点,奇数长度返回中点,偶数长度返回上中点.问题二:输入链表头结点,奇数长度返回中点,偶数长度返回下中点.同时我们不使用容器的策略就是使用快慢指针.
2022-09-04 01:18:10
313
原创 线程的不同状态
2.就绪状态(Runnable)线程创建后,其他线程调用了该对象的start()方法.该状态的线程位于"可运行线程池"中,变得可运行,只等待获取CPU的使用权.即在就绪状态的进程除CPU之外,其他的运行所需资源都已经全部可获得.(3)其他阻塞运行的线程执行sleep()或join()方法,或者发出来I/O请求时,JVM会把该线程置为阻塞状态.当sleep()状态超时,join()等待线程终止或者超时,或者I/O处理完毕时,线程重新转入就绪状态.1.新建状态(New)新创建了一个线程对象。...
2022-07-28 13:59:57
159
原创 多线程的具体使用
Thread.currentThread().isinterrupted()判断指定线程的中断标志被设置,不清除中断标志这种方式通知手到的更加及时,即是县城正在sleep也可以马上手到.当出现InterruptedException的时候,要不要借宿线程取决于Catch中代码的写法.可以选择忽略这个异常,也可以跳出循环结束线程.Thread.interrupted()判断当前线程的中断标志被设置,清楚中断标志.关于后台线程,需要记住一点JVM会在一个进程的所有后台线程结束后,才会结束运行....
2022-07-26 03:32:49
138
原创 动态内存管理
mallocvoid* malloc (size_t size);这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器#include<limits.h>
2022-03-09 12:38:58
1087
1
原创 Java初识
首先我们先用记事本,先写一个java程序。public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");}}如上展示的就是最简单的一个Java程序,可能同学们看到后一头雾水,可以说,Java的main方法应该是当前主流编程语言中最“长”的。通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:1.源文件(扩展名为*
2022-03-08 21:26:42
118
1
原创 字符串和内存函数
字母串关键字const char *string是为了防止指针被改变,计算是不改变指针内容的我们来自己模拟实现一下。int my_strlen(const char* str){ assert(str); int count = 0; while(*str) { count++; str++; } return count;}assert是为了防止str是空指针。
2022-03-05 14:05:28
142
原创 指针的进阶(2)
指针的高阶应用void menu(){ printf("*******1.Add ************\n"); printf("******* 2.Sub ************\n"); printf("*********3.Mul *************\n"); printf("***********4.Div *************\n"); printf(
2022-03-02 18:41:00
166
1
原创 指针的进阶
当我们对指针的普通理解后,我们就要开始深入了解指针,以及学会指针的应用。首先我们先了解一下指针数组。什么是指针数组呢? 就是我通过字面意思可以了解指针数组就是存放指针的数组(以指针为元素的指针数组)int* arr[] = {0};char* p[] = NULL;这两种的初始化方式都可以。既然有指针数组那么也应该有数组指针,我们同样可以通过字面意思了解,就是指向数组的指针。形如int arr[5] = {0};int (*p)[5] = &arr;我们先.
2022-02-27 15:33:56
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人