
数据结构
文章平均质量分 65
Yingmu__
若有错误,请多多指教。
展开
-
用malloc初始化一个二维char类型数组
用malloc初始化一个二维char类型数组该数组的行数和列数 由我们手动输入之后 接受对应行数的字符串#include<stdio.h>/*用malloc初始化一个二维char类型数组该数组的行数和列数 由我们手动输入之后 接受对应行数的字符串*/int main(void){ char **array; //二级指针动态申请二维数组 int m,n; int...原创 2020-03-23 22:47:36 · 1402 阅读 · 0 评论 -
数组
数组数组,是有序的元素序列。支持快速查询,但删除非常麻烦。实现原理有两点:能够自动扩容和缩容。能够存放不同类型的数据。(使用泛型)首先,我先介绍如何实现存放不同类型的数据。public class Array<E> {}在创建类的时候使用泛型,将数据类型传入。在方法中参数类型改变为泛型。如下:/** * 向所有元素前添加一个元素 */ public v...原创 2018-12-30 10:34:10 · 232 阅读 · 0 评论 -
栈和队列
栈是一种先进后出的数据结构,有进栈和出栈两种操作。应用:撤销,程序调用的系统栈。主要有以下这些功能:int getSize();//得到栈的长度boolean isEmpty(); //判断栈是否为空void push(E e);//进栈E pop();//出栈E peek();//得到栈顶元素具体实现如下:栈的接口public interface Stack<E&...原创 2018-12-30 10:35:39 · 129 阅读 · 0 评论 -
链表
链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。主要有以下几种类型:单向链表双向链表循环链表主要方法:int getSize(); //得到链表元素个数boolean isEmpty(); //判断链表是否为空void add(int index,E e);//链表下标为index中添加元素void addFirs...原创 2018-12-30 10:36:08 · 145 阅读 · 0 评论 -
集合和映射
Set集合集合(set)是一个用于存储和处理无重复元素的高效数据结构。集合分为有序集合和无序集合。–有序结合基于搜索树实现。–无序集合基于哈希表实现。不能添加重复元素。多重集合可以添加重复元素。接口如下:void add(E e); //添加元素Evoid remove(E e); //删除元素Eboolean contains(E e); //是否包含...原创 2018-12-30 10:36:41 · 1754 阅读 · 0 评论 -
二叉树创建及遍历
1. 二分搜索树2. 平衡二叉树(最大深度和最小深度差为1):AVL树,红黑树3. 完全二叉树(二叉堆):除了最高层以外,其余层节点个数都达到最大值,并且最高层节点都优先集中在最左边。4. 满二叉树: 除了最高层有叶子节点,其余层无叶子,并且非叶子节点都有2个子节点。5. 堆,并查集:对数据进行特殊的操作产生高效的结果6. 线段树,Trie(字典树,前缀树)。二分搜索树二分搜索树是...原创 2018-12-30 10:54:36 · 1165 阅读 · 0 评论 -
线段树
线段树(区间树,segment tree)线段树是一颗平衡二叉树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。时间复杂度:操作数组线段树更新O(n)O(log n)查询O(n)O(log n)如果区间有N个元素,数组需要多少个结点?分析:如果N=2^K, 总共是K层,需要2N的空间;如果N=(2^k)+1,总共是K+1...原创 2018-12-30 10:55:41 · 215 阅读 · 0 评论