算法和数据结构
文章平均质量分 90
技术打杂,哈哈哈
试剑江湖。
做你没做过的事叫成长,做你不愿意做的事叫改变,做你不敢做的事叫突破。
展开
-
递归思想以及常见的算法题
递归函数定义基础情况处理(边界问题处理)递归调用递推到当前层以计算n!(n的阶乘)为例:下面是代码模板public void recur(int level, int param) { // 场景不同,参数不同// 先编写终止条件(没有终止条件的递归就是无限递归,类似死循环)// 处理结果数据return;// 处理当前层逻辑(有时需要先处理当前层逻辑再递归到下一导,// 有时候需要递归到下一层根据返回结果处理当前层,所以需要灵活运用)// 进入到下一层(即开始递归)原创 2023-08-20 16:42:15 · 158 阅读 · 0 评论 -
链表基础知识
链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构是多式多样的,当时通常用的也就是两种:(1)第一种是无头非循环单向链表(2)第二种是带头循环双向链表无头单向非循环列表:结构简单,一般不会单独用来存放数据。实际中更多是作为其他数据结构的子结构,比如说哈希桶等等。带头双向循环链表:结构最复杂,一般单独存储数据。实际中经常使用的链表数据结构,都是带头双向循环链表。原创 2023-07-29 12:40:45 · 414 阅读 · 0 评论 -
实现模糊查询
#include<iostream>#include<string>using namespace std;void VagueSearch(char s[][20], char input[]){ int length = strlen(input); bool find = false; char temp; for (int i = 0; i<...转载 2018-09-23 17:20:50 · 731 阅读 · 0 评论 -
(三)打印二叉树中结点层次遍历序列的实现
#ifndef MGraph_H #define MGraph_H #include <iostream> #include <iomanip> using namespace std;#define MaxSize 30 #define INFINITYN 65536 //表示权值无限大 struct shortEdge ...转载 2018-10-01 11:12:39 · 1097 阅读 · 0 评论 -
约瑟夫,淘汰问题
设有n个人围坐一圈并由1到n编号。从某个人(例如编号为k的人)开始报数,数到m的人出列;接着从出列的下一个人开始重新1到m报数,数到m的人又出列;如此反复地报数和出列,直到最后一个人出列为止。试设计确定这n个人出列序列的程序。 #include<iostream> using namespace std;int T = 1;//定义一个全局变量T用以计算操作次数 ...转载 2018-10-01 11:10:10 · 294 阅读 · 0 评论 -
C++解决错误警报的方案集合——以及日历表上输出下一天问题
解决fopen、fscanf 在VS中要求替换为fopen_s、fscanf_s的最全解决办法以外的方法一:在程序最前面加#define _CRT_SECURE_NO_DEPRECATE;方法二:在程序最前面加#define _CRT_SECURE_NO_WARNINGS;方法三:在程序最前面加#pragma warning(disable:4996);方法四:把scanf、...原创 2018-10-01 11:08:19 · 533 阅读 · 0 评论 -
【好用的工具】win10 64位系统中安装多个jdk版本以及切换jdk版本
由于电脑安装了eclipse,同时又安装了idea2018,idea是最新版,必须使用jdk1.8以上,而eclipse中的项目又需要低版本的jdk,所以在电脑上之前安装配置好了jdk1.8,后来又要安装jdk1.7,可以来回切换,但是过程中遇到了很多问题,总结一下。安装jdk后,我们配置环境变量,先特别注意一个问题:一,首先在环境变量的系统变量下新建两个系统变量,变量名(...原创 2019-01-10 23:21:47 · 1543 阅读 · 0 评论 -
C语言学习指针总结(1)
指针可以直接访问计算机内存,因此,合理恰当的运用指针,不但能够高效的表示各种数据结构,还可以大幅度的提高程序的效率。但是,稍有疏漏也会造成各种很严重的问题。1.1 指针的基础 地址:所有的数据都是放在存储器中的,一般把存储器中的一个字节称为内存单元,不同的数据类型所占用的内存单元数不同,为了正确的访问这些内存单元,必须为每个内存单元上编号,这个编号就是地址。 ...转载 2019-07-14 16:44:17 · 187 阅读 · 0 评论 -
二叉检索树中插入和删除操作
/*********************************二叉排序树的相关操作实现**********************************/#include<stdio.h> #include<stdlib.h> typedef struct Node{ int data; struct Node *lchild; struct...转载 2018-06-10 11:06:05 · 226 阅读 · 0 评论 -
【数据结构】单链表
一、参考实例Java实现单链表反转 Java实现链表原创 2020-04-22 16:38:27 · 311 阅读 · 0 评论 -
【数据结构】二叉树基础篇
1 重点概念1.1 结点概念结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。1.2 树结点声明本文章中提及的结点专指树的结点。例如:结点A在图中表示为: 2 树2.1 定义树(Tree)是n(n>=0)个结点的有限集。n=0时称...转载 2019-08-16 21:24:32 · 315 阅读 · 0 评论 -
PV原语操作详解
PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新的变量类型(semaphore)来记录当前可用资源的数量。1,变量类型(semaphore)有两种实现方式:1) 变量类型semaphore的取值必须大于或等于0。0表示当前已没有空闲资...转载 2019-08-16 14:53:08 · 2205 阅读 · 0 评论 -
链式队列相比数组模拟队列的优势
/* 前面在学习顺序队列时,由于顺序表的局限性,我们在顺序队列中实现数据入队和出队的基础上,又对实现代码做了改进,令其能够充分利用数组中的空间。链式队列就不需要考虑空间利用的问题因为链式队列本身就是实时申请空间。因此,这可以算作是链式队列相比顺序队列的一个优势*/#include <stdio.h>#include <stdlib.h>typedef s...原创 2019-08-09 19:50:26 · 1751 阅读 · 0 评论 -
【算法】两个栈实现一个队列
package com.wxw;import java.beans.IntrospectionException;import java.util.Stack;/** * @author 作者 wxw* @version 创建时间:2019年8月12日 上午11:35:20 * 类说明 */public class DoubleStackToQueue { /** ...原创 2019-08-14 11:23:28 · 201 阅读 · 0 评论 -
【数据结构】队列 Queue
/* 【注意】新的问题使用此方法需要注意的是,顺序队列在判断数组是否已满时,出现下面情况:当队列为空时,队列的头指针等于队列的尾指针;当数组满员时,队列的头指针等于队列的尾指针;*/#include<stdio.h>//使用环形数组解决数组模拟队列空间浪费的问题/*顺序队列整体后移造成的影响是:顺序队列之前的数组存储空间将无法再被使用,造成了空间浪费;如果顺序表...原创 2019-08-09 16:45:18 · 558 阅读 · 0 评论 -
【数据结构】单链表初始化
#include <stdio.h>#include <stdlib.h>//链表中节点的结构typedef struct Link { int elem; struct Link *next;}link;//初始化链表的函数link * initLink();//用于输出链表的函数void display(link *p);int...原创 2019-03-26 17:53:49 · 15638 阅读 · 1 评论