自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我要好好当个计院狗

We are all in the gutter,but someone is looking at the stars!

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

原创 内部排序算法

几种常见的内部排序算法

2022-11-09 12:33:51 339

原创 Typora软件--百度网盘链接

计算机软件分享

2022-05-26 13:23:12 468

原创 Java面试手册(包含JavaSE+并发编程+数据库MySQL+Typora软件)

Java面试

2022-05-26 11:30:42 458

原创 JDBC总结

JDBCJDBC编程的六步注册驱动获取连接获取数据库操作对象执行sql处理查询结果集释放资源/* 提供了注册驱动的第一种方式*/import java.sql.Driver;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.sql.Connection;public class JDBCTest01{ public vo

2022-05-18 17:40:45 107

原创 内部排序之选择排序

一、直接选择排序二、堆排序目录一、直接选择排序二、堆排序基本定义基本定义1)大根堆:树中任意一个非终端节点(如果有做孩子或者右孩子)的值比其孩子节点的值大。2)小根堆:树中任意一个非终端节点的值都比其孩子节点小。3)大根堆和小根堆用树来表示肯定是一棵完全二叉树。代码//堆排序(大根堆)//为使数组存放的元素的下标与该值对应的树中的标号一致,所以后面数据的存放都是从下标为1的存储单元开始#include<stdio.h>...

2021-10-11 14:05:11 104

原创 树的基本定义和遍历

#include<stdio.h>#include<stdlib.h>//二叉树的链式存储typedef struct BiNode{ int data; struct BiNode *lchild,*rchild; }BiNode,*BiTree;//定义一棵树BiTree root = NULL;void Visit(BiNode *N){ printf("%d\n",N->data);}void PreOrder(BiTree ..

2021-10-05 09:32:25 137

原创 反向输出单链表的值

一、题目描述设L为带头节点的单链表,编写算法实现从头到尾反向输出每个节点的值。二、题目分析使用头插法来实现单链表的逆置。时间复杂度为O(n),空间复杂度为O(n)。也可以用另一个链表或数组来存储元素然后逆置,这是空间换时间的做法,空间复杂度和时间复杂度都是O(n).三、代码#include<stdio.h>#include<stdlib.h>//对单链表的定义typedef struct LinkNode{ int data; Lin.

2021-10-03 15:59:22 825

原创 在单链表中删除值为x的节点

一、题目再带头节点的单链表L中,删除所有值为x的节点,并释放其空间,假设值为x的节点不唯一,试编写算法以实现上述操作。二、分析题目非常简单,只要熟悉单链表的基本操作就可以很快解决这个问题。三、代码#include<stdio.h>#include<stdlib.h>//对单链表的定义typedef struct LinkNode{ int data; LinkNode *next;}LinkNode,*LinkList;//对单链..

2021-10-03 15:13:39 6244 2

原创 队列的相关操作

由于非循环队列的操作非常简单,并且在出队后会产生很多无法利用的空间,所以在此处不使用非循环队列。一下的介绍均是循环对立。一下代码均是经过测试的,可以直接上机运行。#include<iostream>#include<cstdio>using namespace std;//用顺序表表实现循环队列#define MaxSize 100typedef struct{ int data[MaxSize]; int front,rear; //队头指..

2021-10-03 10:37:34 128

原创 栈的实现以及相关操作

一、用顺序表实现的顺序栈#include<iostream>#include<cstdio>using namespace std;//栈的相关操作以及实现,包括初始化、判空、判满、增(push)、删(pop)、查(getpop);栈不涉及“改”的问题。//栈的的数据结构的定义#define MaxSize 100typedef struct{ //顺序栈 int data[MaxSize]; int top;}SqStac...

2021-10-02 20:02:32 161

原创 线性表的相关操作

线性表的物理结构分为顺序存储和链式存储。以下分别是对顺序表和链表的相关操作的代码表示。顺序表一、顺序表的分配1.、顺序表的静态分配//对顺序表的静态分配#define MaxSize 100typedef struct{ int data[MaxSize]; //使用静态分配的方式 int length; //顺序表的当前长度}SqList;//初始化一个顺序表void InitList(SqList &L){ for(int i ...

2021-10-01 18:51:25 155

原创 生产者与消费者变式--销售人员和顾客的同步问题

问题描述面包师有很多面包,由n名销售人员推销。每名顾客进店后取一个号,并且等待叫号,当一名销售人员空闲时,就叫下一个号。请设计一个使销售人员和顾客同步的算法。问题分析n名销售人员相当于那个缓冲区,顾客相当于消费者...

2021-08-24 17:54:17 420

原创 生产者和消费者问题变式--产品入库

问题描述在一个仓库中可以存放A和B两种产品,要求如下:(1)每次只能存入一种产品。(2)A产品的数量 - B产品的数量 < M.(3)B产品的数量 - A产品的数量 < N.其中,M、N是正整数,试用P、V操作描述产品A与产品B的入库过程。问题分析1.仓库是一种临界资源,需要互斥访问;2.产品A和产品B之间有同步关系:当A的数量-B的数量>= M时,进程A就会被阻塞;B的数量-A的数量>=N,进程B就会被阻塞。代码semap...

2021-08-24 17:16:59 1430

原创 生产者与消费者问题变式--奇偶数个数计算

问题描述三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区,P1每次用produce()生成一个正整数并用put()送入缓冲区某一个单元;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数,并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动。并说明所定义的信号量的含义(要求用伪代码描述)。问题分析这个问题就是基本的缓冲区代码se...

2021-08-24 16:54:34 842 1

原创 吸烟者问题

问题描述假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟不停地卷烟并抽掉它,但要卷起并抽调一支烟,抽烟者需要三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者进程无限地提供三种材料,供应者每次将两种材料放到桌子上,用于剩下那种材料的卷烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,此时供应者就会将另外两种材料放到桌子上,如此重复(让三个抽烟者轮流地抽烟)。关系分析1.供应者进程和抽烟者进程之间是同步关系;2.抽烟者之间是互斥关系。.

2021-08-24 13:31:28 116

原创 哲学家进餐问题

问题描述一张圆桌上坐了五名哲学家,每两名哲学家之间的桌子上摆了一根筷子,两根筷子中间是一碗米饭。哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根地拿起)。若筷子已经在他人手上,则需要等待。饥饿的哲学家只要同时拿起两根筷子才可以开始进餐,进餐完毕后,放下筷子继续思考。问题分析1.临界资源:筷子;2.哲学家们需要互斥地访问筷子;3.如果不对哲学家拿筷子的方式加以限制,很容易导致死锁。比如五名哲学家同时拿起左手边的.

2021-08-23 11:53:32 751

原创 读者-写者问题

问题描述有读进程和写进程两组并发进程,共享一个文件,当两个或两个以上读进程同时访问共享数据时,不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能会导致数据不一致的错误。因此要求:1.允许多个读者可以同时对文件执行操作;2.只允许一个写者往文件中写入信息;3.任意一个写者在完成操作前不允许其他读者或写者工作;4.写者执行操作前,必须等已有的读者或写者全部退出。问题分析...

2021-08-22 23:50:18 526

原创 多生产者和多消费者问题

题目描述桌子上有一个盘子,每次只能向其中放入一个水果。爸爸专门向盘子里面放苹果,妈妈专门向盘子里面放橘子;只有盘子为空时,爸爸或妈妈才可以向其中放入水果;仅当盘子里有自己需要的水果时,儿子或女儿才会从盘子里面取出。关系分析1.爸爸和妈妈是互斥关系;2.爸爸和女儿是同步关系,妈妈和儿子也是同步关系;3.儿子和女儿之间没有同步与互斥关系,因为儿子和女儿是选择条件执行,不可能并发。思路该过程可以抽象为两个生产者、两个消费者和一个缓冲区的问题代码semapho.

2021-08-22 20:13:53 343

原创 生产者和消费者问题(单一生产者和单一消费者)

题目一:一组生产者和一组消费者进程共享一个初始为空,大小为n的缓冲区,只有缓冲区没有满的时候,生产者才能把消息放入缓冲区,否则必须等待;只有缓冲区未空时,消费者才可以从中取出消息,否则必须等待。由于缓冲区是临界资源,所必须互斥访问。关系分析:1.生产者和消费者对缓冲区的访问是互斥关系;2.生产和消费者又有着同步关系,必须先生产再消费。信号量设置:1.设置mutex作为互斥信号量,让生产者和消费者可以互斥地访问缓冲区,且初始值为1;2.设置信号量full来表示非空缓冲区的个数.

2021-08-22 19:20:08 2598 3

原创 《浙大数据结构》进阶试验1—3.1两个有序序列的中位数

题目:一直有两个等长的非降序序列S1,S2,设计函数求S1,S2并集的中位数。有序序列A0、A1、……An-1的中位数是指A(n-1)/2。方法一:开设一个新数组来求两个序列的并集,然后再去求新的序列的中位数。但是这种做法增加了空间的开销。我们在求两个序列的并集中位数并不需要保存整个并集,只需要比较两个序列当前的数字,当所取到的第N个数即是两个序列并集的中位数。/*求两个集合并集的中位数方法一:先求并集,然后求中位数*/#include<bits/stdc++.h>..

2021-08-22 17:50:50 210

原创 浙大版《数据结构(第2版)》题目集

习题1.8二分查找(20point(s))题目地址:https://pintia.cn/problem-sets/434/problems/965458856133562368题目基本思路:首先查找mid所对应下标的数值和X比较,如果比X小,说明所要查找到数在mid右边;如果相等,则直接返回mid;如果比X大,说明查找的数在mid左边。Position BinarySearch( List L, ElementType X ){ Position first = 1,mid; w..

2021-01-23 20:40:44 250

原创 PAT--陈越、何钦铭-数据结构-起步能力自测题--自测-3 数组元素循环右移问题 (20point(s))

题目链接:https://pintia.cn/problem-sets/17/problems/262该题的基本思想:先将整个数列全部逆置,然后再将前(n-p)个数逆置,最后将最后p个数逆置。(可以手动模拟一下)#include<bits/stdc++.h>using namespace std;void verse_array(int a[], int start, int end){//将数组中给定的起点和终点之间的数逆置 int temp; for(in

2021-01-23 19:32:38 114

原创 PAT--陈越、何钦铭-数据结构-起步能力自测题--自测-1 打印沙漏 (20point(s))

题目链接:https://pintia.cn/problem-sets/17/problems/260#include<bits/stdc++.h>using namespace std;int main(){ int N; char c; cin>>N; cin>>c; int sum = 1,num = 0, count = 1; while(sum <= N) { num++; count = count + 2; su

2021-01-23 19:20:53 122

原创 SMTP协议详解

用户代理(UA:User Agent):是用户与电子邮件交互的接口,一般来说使我们PC机上的一个程序。Windows上常见的用户代理是Foxmail和Outlook Express。

2021-01-14 17:24:08 1183

原创 《计算机网络--自定向下的方法 第七版》第一章课后习题解答

习题P1.P2.式(1-1)给出径传输速率为R的N段链路发送长度L的一个分组的端到端时延。对于经过N段链路一个接一个地发送P个这样的分组,一般化地表示这个公式。P3.考虑一个应用程序以稳定的速率传输数据。另外,当这个应用程序启动时,它将连续运行相当长的一段时间。回答下列问题,简要论证你的回答。a.是分组交换还是电路交换更为适合这种应用?为什么?答:应该使用电路交换更合适,b.假定使用了分组交换,并且网中的所有流量都来自于如上所述的这种应用程序。此外,假定该应用程序传输速率的总和小于每

2021-01-12 16:48:53 1693

原创 《计算机网络--自顶向下方法》课后复习题&习题解答

R19. 假定主机A要向主机B发送一个大文件。从主机A到主机B的路径上有三段链路,其速率分别为R1 = 500kbps,R2 = 2Mbps,R3 = 1Mbps。a.假定该网络中没有其他流量,该文件传送的吞吐量是多少?答:吞吐量 = 500kbps,是三段链路中吞吐量的最小值(即由瓶颈链路传输速率决定)。(为什么以瓶颈链路的传输速率来表示整条链路的吞吐率:如果有较大的发送速率,但是只有较小的接收速率,会导致中间路由比特堆积,这是一种最不希望看到的情况)b.假定该文件为4MB。用吞吐量除以文件长

2021-01-12 02:45:59 19824 1

原创 计算机网络--自定向下方法(配套资源)

Wireshark试验指南和教材配套的PPT网址https://gaia.cs.umass.edu/kurose_ross/wireshark.htmhttps://gaia.cs.umass.edu/kurose_ross/ppt.htm教材英文版【第七版】Baidu网盘地址:链接:https://pan.baidu.com/s/1tJ7Sek75UoYZGGLy8EZH8Q提取码:jmcj如果链接失效,请私信。...

2021-01-11 18:26:54 1216 1

原创 《算法导论》第二章 算法基础

2.1插入排序1.关键词:希望排序的数。2.工作方式:(类似排序扑克牌)开始时,我们的左手为空并且桌子上的扑克牌牌面朝下。然后,我们每次从桌子上拿走一张扑克牌并将它插入到左手中的正确位置。为了找到一张牌的正确位置,我么需要从右到左将它与已在手中的每张牌进行比较。拿在手里的牌总是排好序的,原来这些牌是桌子上牌堆顶部的牌。 ...

2020-04-30 15:20:42 175

原创 《算法导论》第一章

1.1算法1.算法:是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或值的集合作为输出。(把输入转化成输入的计算步骤的一个序列)2.问题实例:有计算该问题解所必需的的输入(满足问题的陈述中强加的各种约束)组成。3.好的算法的依据:被排序的项数、这些项已被稍微排序的程度、关于项值的可能限制、计算机体系结构、使用的存储设备的种类(主存、硬盘或磁盘)。4.数据结构:...

2020-04-27 15:46:02 346

原创 leetcode 141 环形链表

https://leetcode-cn.com/problems/linked-list-cycle/solution/huan-xing-lian-biao-by-leetcode/

2020-03-12 21:27:06 91

原创 leetcode

题目链接:https://leetcode-cn.com/problems/remove-linked-list-elements/题目分析:方法一:(参考leetcode官方题解)a.要删除的节点式中间节点,选择要删除节点的前一个接点pre,将pre指向删除节点的nextb.要删除的节点是头结点,如果直接删除会导致链表没有头结点。 此时设置一个哨兵节点,此处哨兵为伪头。/*...

2020-03-12 17:57:13 159

原创 leetcode237:删除链表中的节点

题目链接:ttps://leetcode-cn.com/problems/delete-node-in-a-linked-list/题目含义:给定一个节点,删除这个节点。当时一看,这个来一个pre指针,不就解决了吗?Too young,too simple!都没有头指针,那来的遍历,pre还有啥用!策略:(不是我自己想出来的,我当时就也没想到,见识太少)比如我们要删除一个节点node,我们...

2020-03-12 13:37:56 111

原创 leetcode 面试题52:两个链表的第一个公共节点

题目分析:1.公共节点:两个链表拥有公共节点不是指两个链表的节点的数据域相同,而是指两个链表的指针指向同一个节点,即具有相同的地址。2.需要注意的是:由于单链表只有一个next域,所以只要找到两个链表的第一个公共节点,那么从第一个公共节点开始,两个链表后面的节点均是重合的,即两个有公共节点而部分重合的单链表,拓扑形状看起来像Y,而不是X。3.解决方法: a.暴力法:对于第一...

2020-03-12 12:40:54 521

原创 数据结构--顺序存储结构

关于一元多项式的计算问题方法一:可以取一个数组,将对应的幂的系数存储在相应的下标的位置,下标表示指数的大小。这样的方法对于非零项比较少的多项式会造成空间的浪费。方法二:采用结构体来表示指数和系数typedef struct{int index;double coefficient;}polynomial;polynomial pn[100];对于两个多项式,其系数和指...

2019-06-15 10:50:50 876

原创 PAT 1104 Sum of Number Segments (20 分)

题目链接:https://pintia.cn/prolem-sets/994805342720868352/problems/994805363914686464对于本道题目,有多种想法,将其中一种想法总结如下:1.对于题目的分析比如有四个数字,下面用1,2,3,4分别代表各个数字,情况如下:11 21 2 31 2 3 4———————22 32 3...

2019-04-29 21:18:35 197

原创 PAT 1007 素数对猜想 (20 分)

题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744这道题比较简单,但是自己的做法稍微复杂了一点:先将100000范围的素数都找出来保存在数组prime[]中,然后再用循环去判断。看了晴神的做法,自己确实有点傻逼,哈哈哈#include<bits/stdc++.h&...

2019-04-29 20:10:55 123

原创 PAT 1078 Hashing (25 分)

题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805389634158592首先题目的意思大概是:给出散列表Tsize和欲插入的元素,讲这些元素按照读入的顺序插入到散列表中。解决元素放置冲图的办法是:只往正向增加的二次探查法。如果给出的Tsize不是素数,则需要将Tsize变成一个比Tsize大的死一个素...

2019-04-29 19:47:23 195

原创 PAT 1015 Reversible Primes (20 分)

附上题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805495863296000这道题目主要考察两个知识点:1.如何判断一个数是一个素数2.如何进行进制之间的转化注意:题目中给的数不管是二进制还是十进制,都是以十进制的格式输入的,所以我们需要得到N在任意进制下的各个位数,再将各个位上的数颠倒,...

2019-04-29 14:52:02 156

原创 PAT B1013 数素数 (20 分)

附上题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/9948053099633541这道题目,有一点需要注意的就是,找出一个包含了10000个素数的范围,下面提供一下简单的代码:这段代码基本上包含三个部分:1.怎么判断一个数是素数2.怎么判断某个范围内的数哪些是素数,并且保存下来第一点和第二点...

2019-04-29 13:04:48 187

原创 素数的判断和怎么得到某个数据范围内的素数问题

对于数据个数比较少的题目来说,求某一范围内的素数问题,可以直接用传统的枚举方法来判断即可。下面是怎么判断一个数是不是素数。​ bool isPrime(int num) { if(num <= 1) return false; int sqr = (int)sqrt(num*1.0); for(int i = 2; i <= sqr; i++) { ...

2019-04-28 23:36:50 630

空空如也

空空如也

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

TA关注的人

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