
数据结构
文章平均质量分 58
伟伟哦
我只是一名小学生 能力一般 水平有限 一直抱着学习的态度
展开
-
Go 双链表 接收者是值类型好,还是指针类型好
双链表原创 2023-01-28 16:42:53 · 362 阅读 · 1 评论 -
树 二叉树的层次遍历 II
3 / \ 9 20 / \ 15 7 [ [15,7], [9,20], [3], ]function levelOrderBottom($root){ $res = []; if (!$root) return $res; $queue = []; array_push($queue...原创 2020-09-25 14:05:25 · 83 阅读 · 0 评论 -
PHP二叉树(二):平衡二叉树(AVL)
<?php//结点class Node{ public $key; public $parent; public $left; public $right; public $bf; //平衡因子 public function __construct($key) { $this->key = $key; $this->parent = NULL; $this->left转载 2020-08-21 16:54:17 · 140 阅读 · 1 评论 -
跳表:为什么Redis一定要用跳表来实现有序集合?
跳表因为二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现如果数据存储在链表中,就真的没法用二分查找算法了吗?我们只需要对链表稍加改造,就可以支持类似“二分”的查找算法。我们把改造之后的数据结构叫做跳表(Skip list)如何理解“跳表”?因为二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现如果数据存储在链表中,就真的没法用二分查找算法了吗?我们只需要对链表稍加改造,就可以支持类似“二分”的查找算法。我们把改造之后的数据结构叫做跳表(Skip list)但是它确实是一种各方面原创 2020-12-22 17:28:22 · 228 阅读 · 0 评论 -
php 希尔排序
/*1、间隔为4,每间隔4个人,这些人排成一组2、在每一组的组内进行排序,数组交换,比大小 3、重新设置间隔分组,例如 黄色一组 ,黑色一组 、在进行组内排序交换(用的是插入法)重点、分组的间隔都会越来越小,最后变成1,如果变成1的时候,说明已变成了一组排序用的是插入排序 分组间隔不停的减少,不停的分组,不停做组内的排序最终变为1为止*/希尔排序算法的php实现2php实现希尔排序...原创 2020-08-31 16:54:43 · 189 阅读 · 0 评论 -
数组 为什么很多编程语言中数组都从0开始编号?
数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。原创 2020-12-16 09:28:03 · 219 阅读 · 0 评论 -
链表 头节点描述
$new = new ListNode($val); $cur->next = $new; $cur=$cur->next;数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。 作用1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.2、是为了方便单链表的特.原创 2020-06-15 18:11:02 · 105 阅读 · 0 评论 -
链表虚拟头结点存在的意义
数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。 作用1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性!3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表转载 2020-05-29 15:04:44 · 1967 阅读 · 0 评论 -
python 红黑树的基础
1原创 2019-12-27 17:53:06 · 260 阅读 · 1 评论 -
python AVL树的插入
key 关键字项bf 平衡因子data 其它数据域lchild rchild 左右孩子原创 2019-11-20 16:24:49 · 514 阅读 · 2 评论 -
python 树的添加节点 广度和深度遍历
功能:给树添加结点思想:用广度遍历去做queue = [0]广度优先,根节点是0的 ,0添加到队列里面第一次取出0,添加1和2第二次取出1,添加3和4第三次取出2,添加5和6第四次取出3,添加7个8第五次取出4,添加9...原创 2019-11-19 14:55:13 · 617 阅读 · 0 评论 -
python AVL树基础
1原创 2019-11-19 16:44:02 · 514 阅读 · 1 评论 -
python 二叉搜索树 插入 查询 删除
二叉搜索树是一颗二叉树且满足性质:设x是二叉树的一个节点。如果y是x左子树的一个节点,那么y.key 小于等于 x.key;如果y是x右子树的一个节点,那么y.key大于等于 x.key二叉搜索树的操作: 查询 插入 删除左边小右边大#! /usr/bin/env python# -*- coding: utf-8 -*-import randomclass BiTreeNod...原创 2019-11-12 17:19:25 · 361 阅读 · 0 评论 -
python 二叉树
二叉树二叉树的链式存储: 将二叉树的节点定义为一个对象,节点之间通过类似链表的链接方式来连接原创 2019-11-11 14:10:02 · 912 阅读 · 0 评论 -
python 树
树是一种数据结构 比如:目录结构树是一种可以递归定义的数据结构树是由n个节点组成的集合:如果n=0,那这是一颗空树如果n>0,那存在1个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树根节点、叶子节点 --没有孩子是叶节点树的深度(高度)树的度 --这个树里面所有节点最大的度 A有6个 F有3个,所以是6个孩子节点/父节点子树 ...原创 2019-11-11 11:42:22 · 157 阅读 · 0 评论 -
python 哈希表概念
哈希表一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作:insert(key,value): 插入键值对(key,value)get(key):如果存在键为key的键值对则返回其value,否则返回空值delete(key): 删除键为key的键值对...原创 2019-11-10 14:57:34 · 878 阅读 · 0 评论 -
Python 双链表
双链表的每个节点有两个指针: 一个指向后一个节点,另一个指向前一个节点如何插入呢插入删除原创 2019-11-12 19:24:09 · 432 阅读 · 0 评论 -
python 链表
链表是由一系列节点组成的元素集合,每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表原创 2019-11-03 00:20:24 · 481 阅读 · 0 评论 -
python 队列 广度优先搜索
刚开始队列里面只有1,1出队,2进队,2出队,3进队,3出队,4和5进队,4出队,6进队现在队列里面是5和6,5出队,7进队,队列里面现在是6和7,6出队,8和9进队,队列里面还有7、8、9,7出队10进队,队列里面还有8、9、10出队 1 2 3 4 5 ...原创 2019-11-02 23:45:34 · 287 阅读 · 0 评论 -
python 栈的应用 迷宫
搜索四个方向能走的点不能走,回退上一个点走过的路放在栈里,一个点一个坐标,能走的放到栈里,如果走到一个点,没有路了,标记下不能走了,往回退出栈这样以此类推...原创 2019-11-02 23:50:55 · 882 阅读 · 0 评论 -
python 队列
队列(Queue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除进行插入的一端称为队尾(rear),插入动作称为进队或入队进行删除的一端称为队头(front),删除动作称为出队队列的性质:先进先出(First-in,First-out)环形队列:当队尾指针 front == Maxsize -1 时,在前进一个位置就自动到0队首指针前进1: front = (front...原创 2019-11-02 19:49:05 · 156 阅读 · 0 评论 -
python 栈
栈(Stack)是一个数据集合,可以理解为只能在一端进行插入或删除操作的列表栈的特点:后进先出 LIFO (last-in,first-out)栈的特点: 栈顶、栈底栈的基本操作进栈(压栈): push出栈:pop取栈顶:gettop...原创 2019-10-29 18:30:30 · 263 阅读 · 0 评论