防抖与节流
防抖节流防抖:**事件触发过于频繁,只要最后的一次来执行事件 **;
例如input标签存在 输入内容后提示
一般每输入一个字符就会oninput事件
防抖动会让内容交互的次数较少在最后提交
123456789101112131415161718192021222324252627282930313233343536<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></he ...
二叉树的遍历
二叉树
二叉树的遍历:
前序遍历:根左右;
中序遍历:左根右;
后序遍历:左右根;
结点定义12345678910struct TreeNode{ char val; TreeNode *lchild; TreeNode *rchild; TreeNode(char val){ this->val = val; this->lchild = this->rchild = NULL; }};
前序遍历递归实现123456789101112131415// 前序遍历// 递归实现void PreOrderTraversal(TreeNode *root){ if (root == NULL) { return ; } else { cout<<root->val<<","; PreOrderTraversal(root->lchild); PreOrderTraversal(root->rchild ...
css实现圆形进度条和浮光掠影
圆形进度条和浮光掠影圆形进度条:思路: 在网上看到的思路,设计两个半圆分别放在两个盒子里面,初始时,在透明处,然后旋转,控制两边旋转时的时间就以了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0&quo ...
基于多态的职工管理系统
职工管理系统
职工管理系统的需求分析:1.公司职工分为三类: 普通员工,经理,老板,显示信息时,需要显示职工编号,职工岗位,部门编号,以及职责。
2.管理系统中需要实现的功能如下:
退出管理程序:退出当前的管理系统。
增加职工信息:实现批量添加职工,将信息录入到文件当中,职工信息为:职工编号,职工姓名,部门编号。
显示职工信息:显示公司内部所有的员工信息。
删除离职职工:按照编号删除职工。
修改职工信息:按照编号修改职工信息。
查找职工信息:按照职工编号或职工姓名查找职工信息。
按照编号排序:按照职工的编号对职工进行升序或降序排列。
清空所以文档:清空文件中的所有职工信息。(清空前需确认是否删除,防止误删。)
实现1. 创建worker类,之后普通员工、经理、老板类均基于此实现。12345678910111213141516171819#pragma once#include <iostream>using namespace std;class worker{public: // 显示信息 virtual void showinfo () = 0; / ...
深拷贝与浅拷贝
深拷贝与浅拷贝在构造函数会涉及到的拷贝函数:
拷贝函数中内存的释放例如:
1234567891011121314151617181920212223242526272829303132333435class person{ public: person (int age,int height){ m_age = age; m_height = new int (height);//有参函数的调用 } //person(const person &p){//拷贝函数 // //} ~person (){//析构函数:释放堆区中开辟的数据 if (m_height != NULL){ delete m_height; m_height = NULL; } } ...
通讯录管理系统
通讯录
目标:实现对姓名,性别,年龄,电话号码,家庭住址的输入,做到可以添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人
代码实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617 ...
链表
链表
单向链表的基本说明链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。链表可以在多 ...
牛顿迭代法
牛顿迭代法——c/java
牛顿迭代式: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include <stdio.h>#include <stdlib.h>#include <math.h>double fun (double x){ // 原函数 return x*x*x*x+3*x*x*x+2*x;}double func (double x){ // 导函数 return 4*x*x*x+9*x*x+2;}int newton (double *x,int precision,int maxcyc){ // precision -> 精度 ; maxcyc -> 迭代次数 double x1,x0; x0=*x; for (int i = 1;i<=maxcyc;i++){ ...
栈应用_括号匹配问题
括号匹配
对于给定的一组括号问题:(),{},[].
若其满足一一对于关系,如:(()[]{}),[[({})[]]],(([]{})), 等类似,则其满足括号相对应匹配,而如果是:[{}}{}],()),{){[]}},等类似就不满足括号的匹配.
那么首先我们可以先建立一个栈,若遇到 (,{,[ 则我们把它放入栈顶,若遇到 ),},] 则我们检验栈顶元素是不是于它相对应的符号,是的话我们就把栈顶的元素退栈,若不是我们则返回flase.
代码实现:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889#include <stdio.h>#include <stdlib.h>int push (char *a,int top,char b); //进栈int pop ( ...
算法排序_希尔排序
希尔排序
基本思想先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 =1(
…
该方法实质上是一种分组插入方法
比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。
一般的初次取序列的一半为增量,以后每次减半,直到增量为1。
给定实例的shell排序的排序过程
假设待排序文件有10个记录,其关键字分别是:
49,38,65,97,76,13,27,49,55,04。
增量序列的取值依次为:
5,2,1
图片演示
代码实现1234567891011121314151617181920212223242526272829303132333435363738 ...