- 博客(23)
- 收藏
- 关注
原创 有向图 -- 十字链表实现
对于有向图来说,基本的邻接表只存储了顶点集以及对应顶点出度的单链表。这样的结构仅仅能方便的访问对应顶点的所有出度,要访问入度是很麻烦的,需要遍历整个邻接表。那有没有办法方便遍历入度呢?当然是有的,使用逆邻接表。就相当于我们的出度域不再存储出度单链表,改成存储入度单链表的信息。这样的话需要邻接表+逆邻接表才能实现方便遍历对应顶点的出度+入度。用了两个邻接表才表示一个有向图,这是很浪费空间的。那有...
2020-01-20 22:32:52
859
原创 如何用Python做点面向“对象”的东西?
我说的当然是你们没有的那个对象。嘿嘿嘿。别问我你的程序为什么找不到对象,不止是你的程序,还有你!(哈哈哈哈)话说,一年的情人节到底有多少?问了度娘后,我惊呆了!1月14日:日记情人节,跨年夜小俩口一起度过!在烟火下许下新年心愿!不妨趁着这天,互赠足够纪录一整年恋爱情事的日记本,象征2人将携手走过未来一年,并留下更多美好回忆。(也不一定1月14日,反正马上要过年了,又要表示心意的时候到了。。。...
2020-01-19 19:25:08
1998
原创 图 -- 邻接表实现
何为邻接表?由于邻接矩阵存储图的方式,需要固定的开辟一块空间,比如顶点多,但是边很少,这样的邻接矩阵中存在大量的未利用空间。同时,使用数组的方式,虽然查询遍历方便,但是有时需要增删操作时,会比较麻烦且耗时。于是乎,引申出了邻接表,采用数组+单链表的方式实现链式存储。
2020-01-18 23:57:22
358
原创 Graph 图 -- 定义与存储
何为图?一种描述多对多关系的一种数据结构。更正式的定义是将图描述成有限非空顶点集+有限边集。从这个定义来看,自然是不存在空图的。与线性表及树的区别:链表(一对一),元素至多有且仅有一个前驱和一个后继;树(一对多),元素至多有且仅有一个父节点和任意个子节点。其实树可以看作一种特殊的图结构。也就是说图可以简化成类似树形的结构(如果是连通图,可简化成一棵生成树;非连通图,可简化成若干生成树组成...
2020-01-18 13:04:36
581
原创 Huffman树
Huffman树哈夫曼树,也叫最优二叉树,含n个带权叶子结点带权路径长度最短的二叉树。基本概念:路径长度? 路径上所经历边的数目。结点的权? 结点所经路径被赋予的权重。树的带权路径长度? 树中所有叶子结点带权路径长度之和。(WPL = ∑ WL)构造算法将n个结点(每个结点带有一定权值)构造为一棵Huffman树:n个结点自成森林集;选取两棵权值最小的树作左右子树构成一棵...
2020-01-16 19:14:17
476
原创 学生管理系统链表简单实现
Student Management System闲来无事,简单写个项目。主要功能:添加;删除;查找;显示。当然要继续添加,比如根据学号排序,插入等都是可以实现的。主函数功能简单,当然主函数功能简单免不了函数内部实现需要添加提示语句等,考虑输入输出等,就会使得函...
2020-01-05 13:06:49
546
原创 Flask快速上手!!! -- URL传参 URL反转 重定向 jinja2模版渲染
何为Flask?Flask是一个Python编写的轻量级web应用框架。框架微小简洁,可扩展性好,可引入更多的轮子来实现更强大的功能。第一个Flask程序步骤详解:引入Flask库创建Flask对象设置路由定义视图函数调用方法启动代码如下:#引入Flask库from flask import Flask#实例化,创建对象app = Flask(__name__)...
2020-01-01 19:15:23
765
原创 C -- 线索二叉树
线索二叉树什么是线索二叉树?简单点说就是,线索化后的二叉树。线索是指结点中指向前驱和后继的指针。二叉树即,先前提到过的二叉树,若二叉树中的结点存在空指针域,则我们可以利用此空域作为线索。那如何在二叉树的基础上构建线索二叉树?即利用基本二叉树中的空指针域,避免浪费,用来指示前驱或者后继结点,这个过程即线索化。那问题来了当我们遍历这种线索化后的二叉树的时候,怎么知道当前节点的指针域是子树域还是线...
2019-12-31 16:58:58
280
原创 Python创建类时错误? 类型错误:类无参数
前言Python是我第一门接触到的面向对象的语言,很久前学过Pyhton的基础语法,和大多数人一样,学了基础过后了解了很多方向,学过一点基于requests的爬虫,也了解过基于pygame的游戏开发相关知识,也了解过python的numpy科学计算库。到现在也有一段时间了,也差不多都忘了,感觉还是个小白。现在想回来继续python的面向对象学习,不曾想一来就犯了这么低级的错误。。。从面向过程到...
2019-12-28 21:54:24
3659
6
原创 C -- 循环链表
循环链表什么是循环链表?单链表(仅含一个指针域,每个节点存在直接后继)尾指向头(形成一个循环)单链表的话只能从链表头开始遍历,才能访问到所有的节点,而循环链表,由于形成了一个圈,从任意一个节点出发我们都可以访问到所有的元素。所以定义循环链表类型时,我们可以用一个指针标识头,一个指针标识尾,在之后的操作中添加一条语句,将tail->next = head; 添加这样一条语句,我们...
2019-12-22 18:40:39
269
1
原创 如何快速找到长度未知单链表的中间节点 -- 快慢指针法
据说是腾讯的一个面试题问题:已知一个长度未知单链表,如何快速找到中间位置的节点?长度未知单向链表分析问题目的:找到最中间位置的节点。其实就是一个我们如何去遍历这个单链表的问题。初步上手单链表的特性大家都知道,只能单向遍历,而且此处还不知道链表的长度。一种方法是:先遍历找到链表长度n,然后我们遍历(n+1)/2次,让指针指向链表一半的位置出的节点,此时就是链表的中间位置(忽略偶数长...
2019-12-22 16:00:18
618
原创 C -- 二叉树(含递归以及非递归算法实现)
二叉查找树什么是二叉查找树?是树的一种,即度为2的树。简单点说就是,每个节点至多只有两个子节点(也就是说存在0、1、2个结点);描述的是一种一对多的关系,可由一个根节点衍生出一棵左子树,一棵右子树,每一棵子树又可以看成一一个根节点发散的树;节点据此我们可以定义树的基本单元为一个节点包含:Data域和指针域(两个指针,一个指向节点,一个指向右节点)typedef struct _n...
2019-12-21 19:27:46
623
3
原创 C -- 二分查找
二分查找二分查找,实现很简单,但是有的同学第一次接触的时候可能会踩一些坑。本文以排好序的整数数组为例。讨论并实现二分查找。二分查找,又叫折半查找,顾名思义,可以通过比较中间位置是否与要查找的相等。如果相等即找到了目标,否则,看目标落在中间位置左侧还是右侧,然后再同样的到对应区间去找。分析考虑假设我们有这样一个数组#define MAXSIZE 10int array[MAXSI...
2019-12-19 22:08:28
125
原创 C -- 栈
什么是栈(stack)?栈,也是一种链表系列的另一种数据结构。和队列恰恰相反。队列(Queue)First in first out,即先进先出,通俗点说就是只能从尾添加,从头开始删。栈(Stack)Last in first out, 即后入先出,通俗点说就是从尾部添加(入栈),只能从尾部开始删除(出栈)。其实之前学到过一个函数,好像是叫atexit(),参数是一系列函数指针,这个函...
2019-12-19 17:03:29
169
原创 PAT甲级刷题 -- 1002 A+B Polynomials
1002问题:A+B Polynomials分析考虑!可以很容易想到用数组,数组下标i代表第 xi 项,然后将系数存放在对应下标位置。用两次循环读入,读入到到数组对应位置。考虑到可能包含重复的项,在写入数组时要注意,重复项需要累加,于是写入到数组时我们采用累加的方式。同时还需要注意边界,范围是0-1000,意味着数组下标可以从0-1000,也就是数组的大小为1001。然后考虑输出部分我们输...
2019-12-17 22:08:44
174
原创 PAT甲级刷题 -- 1001 A+B Format
1001问题: A+B ForamtQuestion:Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).Input...
2019-12-17 19:40:51
175
原创 C -- 队列
队列一、什么是队列?队列可类比为有两个特殊属性的简单链表:新项只能添加到链表末尾只能从链表头开始删除项通常简称为先进先出,可类比为排队,后来的人跟在链表末尾,然后前面排完队的人先离开。二、实现队列清楚了队列的先进先出这一特性,我们似乎可以很快想到这其实不就是链表吗(而且是相当简单的链表。。。),只是赋予了链表一些固定的属性,因此我们可以采用链表实现队列,当然它的一些接口也受链表属...
2019-12-13 16:42:05
175
原创 C -- 双向链表
C双向链表第一步:建立抽象类型,定义接口//实现双向链表#ifndef _LIST_H#define _LIST_H#include <stdbool.h>#define SIZE 20//抽象一个数据类型typedef struct _item{ char title[20]; double value;}Item;//定义节点,每个结点包括指向上一个和...
2019-12-12 20:58:40
242
原创 C -- C预处理器和C库
C预处理器和C库一、预处理器指令#include//引用系统库,在系统目录中查找相应库#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>//引用自定义库,在当前目录下查找相应头文件#include "MY_HEAD.h"#de...
2019-12-10 18:55:57
246
原创 C -- linked_list
链表(Linked List)定义结点类型,链表的基本单元:typedef struct _node{ int value; struct _node * next;}Node;定义列表类型,存放链表头结点指针和尾结点指针,表示一个链表类型:typedef struct _list{ Node * head; Node * tail;}List;声明一个结点...
2019-12-07 18:51:11
291
原创 C -- 位字段
位字段(bit field)1.使用结构构建可访问对应位的位字段:优点:提供可以更紧凑的存储数据的方式,使用特定位缺点:移植性差基本单元:unsigned int//如何创建位字段struct bits_field{ unsigned int color : 3; //有效使用3bits,范围0-7 unsigned int opaque : 1; //有效使用1bit,范...
2019-12-06 11:59:33
292
原创 C -- 位操作基础
位操作运算符###基本运算符*运算符~&|^<<>>含义按位反按位与按位或按位异或左移右移1、按位反: ~一元运算符,逐位取反,产生二进制反码;例:表达式 ~(10010001)结果值 01101110;2、按位与: &二元运算符,逐位比较,都真才真(1 & 1 = 1);例:...
2019-12-01 18:46:30
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人