数据结构
寻玉
这个作者很懒,什么都没留下…
展开
-
KMP 算法(1):如何理解 KMP
转自:https://61mon.com/index.php/archives/183/comment-page-4#comments 一:背景展开目录给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的常用算法之一,这个算法是由高德纳(Donald Er转载 2018-01-10 18:31:04 · 348 阅读 · 0 评论 -
使用链表实现队列
使用链表实现队列 public class LinkedListQueue2<E> implements Queue<E> { private class Node { public E e; public Node next; public Node(E e, No...原创 2018-12-05 13:04:44 · 469 阅读 · 0 评论 -
使用链表实现栈
使用链表实现栈public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}public class LinkedListStack<E> implements Stack<E...原创 2018-12-05 13:02:42 · 663 阅读 · 0 评论 -
链表实现与时间复杂度分析
一、链表:&nbsp;&nbsp;&nbsp;&nbsp;二、链表的两种实现:1.不适用虚拟头节点&nbsp; 不用虚拟头节点在添加元素的操作上要单独考虑在链表的头添加元素。而加了虚拟头节点可以统一处理,关键是要找到要添加节点的前一个节点&nbsp;&nbsp;&nbsp;public class LinkedL原创 2018-12-05 12:58:03 · 12381 阅读 · 0 评论 -
循环队列
解决数组队列出队时间复杂度是O(n)的问题,由O(n)->O(1)public class LoopQueue<E> implements Queue<E> { private E[] data; private int front, tail; private int size; // 有兴趣的同学,在完成这一章后,可以思考一下:...原创 2018-12-05 12:47:13 · 155 阅读 · 0 评论 -
数组队列
public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront();}public class ArrayQueue<E> imp...原创 2018-12-05 12:43:22 · 150 阅读 · 0 评论 -
栈的应用和基本实现
栈的概念 栈的应用 无处不在的Undo操作(撤销)程序调用的系统栈 栈的实现public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}...原创 2018-12-05 12:37:08 · 140 阅读 · 0 评论 -
封装动态数组类Array
功能:1.增、删、改、查2.扩容、缩容3.复杂度分析4.均摊复杂度5.复杂度震荡&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;分析动态数组的时间复杂度:&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&am原创 2018-12-05 12:12:42 · 318 阅读 · 0 评论 -
双向链表的插入及删除图解
双向链表的插入 这里写图片描述第一步:首先找到插入位置,节点 s 将插入到节点 p 之前 第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior; 第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s; 第四步:将节点 s 的后继指向节点 p 即 s->next = p; 第五步:将节点 p 的前驱指向节点转载 2017-08-22 14:18:19 · 1859 阅读 · 0 评论 -
简单的程序诠释C++ STL算法:copy
前面十二个算法所展现的都属于非变易算法(Non-mutating algorithms)系列,现在我们来看看变易算法。所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等。我们现在来看看第一个变易算法:元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复制目标result给转载 2017-08-23 22:13:14 · 202 阅读 · 0 评论 -
斐波那契查找
// 斐波那契查找.cpp #include "stdafx.h" #include <memory> #include <iostream> using namespace std; const int max_size=20;//斐波那契数组的长度 /*构造一个斐波那契数组*/ void Fibonacci(int * F) ...原创 2018-03-28 16:29:47 · 240 阅读 · 0 评论 -
线索二叉树
#include<iostream> using namespace std; typedef struct BiThrNode { char data; struct BiThrNode *lchild,*rchild; /*左右孩子指针*/ int LTag,RTag; /*...转载 2018-03-16 10:30:15 · 221 阅读 · 0 评论 -
递归
一、递归 二、链表天然的递归性 三、递归解决LeetCode中203号问题(删除链表中的节点)删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1-原创 2018-12-05 13:08:23 · 118 阅读 · 0 评论