自用的数据结构与算法库

数据结构与算法

简介

  1. 常用的数据结构与算法typescript实现
  2. npm => https://www.npmjs.com/package/datastructures-algorithms-ts
  3. github => https://github.com/jarrett-k/datastructures-algorithms-ts

一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

import { Stack } from ‘datastructures-algorithms-ts‘

const stack = new Stac<number>k()

stack.push(...[1,2,3])
stack.push(4)
  • push(element(s)):添加一个(或几个)新元素到栈顶。
  • pop():移除栈顶的元素,同时返回被移除的元素。
  • peek():返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
  • isEmpty():如果栈里没有任何元素就返回 true,否则返回 false。
  • clear():移除栈里的所有元素。
  • size():返回栈里的元素个数。
  • toString(): 返回栈里的内容的字符串表现形式。

队列

普通队列

普通队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。

import { Queue } from ‘datastructures-algorithms-ts‘

const queue = new Queue<number>()

queue.enqueue(...[1,2,3])
queue.enqueue(4)
  • enqueue(element(s)):向队列尾部添加一个(或多个)新的项。
  • dequeue():移除队列的第一项(即排在队列最前面的项)并返回被移除的元素。
  • peek():返回队列中第一个元素。队列不做任何变动(不移除元素,只返回元素信息)。
  • isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
  • clear():移除队列里的所有元素。
  • size():返回队列包含的元素个数,与数组的 length 属性类似。
  • toString(): 返回栈里的内容的字符串表现形式。

双端队列

双端队列(deque,或称 double-ended queue)是一种允许我们同时从前端和后端添加和移除元素的特殊队列。

import { Queue } from ‘datastructures-algorithms-ts‘

const queue = new Queue<number>()

queue.enqueue(...[1,2,3])
queue.enqueue(4)
  • addFront(element):该方法在双端队列前端添加新的元素
  • addBack(element):该方法在双端队列后端添加新的元素
  • removeFront():该方法会从双端队列前端移除第一个元素
  • removeBack():该方法会从双端队列后端移除第一个元素
  • peekFront():该方法返回双端队列前端的第一个元素
  • peekBack():该方法返回双端队列后端的第一个元素)。
  • isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
  • clear():移除队列里的所有元素。
  • size():返回队列包含的元素个数,与数组的 length 属性类似。
  • toString(): 返回栈里的内容的字符串表现形式。

原文地址:https://www.cnblogs.com/guojbing/p/12546202.html

时间: 2024-11-09 02:43:49

自用的数据结构与算法库的相关文章

c语言数据结构和算法库--cstl---王博--相关网站和博客

1.官网 ??http://libcstl.org/download.html 2.下载地址 ? ?http://www.pudn.com/downloads171/sourcecode/os/detail793543.html 3.此人的github ? https://github.com/activesys/libcstl

面试常考数据结构与算法

数据结构部分: 1.数组和链表的区别.(很简单,但是很常考,记得要回答全面) C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小.而在实际应用中,用户使用数组之前无法确定数组的大小,只能够将数组定义成足够大小,这样数组的空间可能不被使用,从而造成内存空间的浪费.链表是一种常见的数据组织形式,他采用动态分配内存的形式实现.需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费. 从逻辑结构上来看

数据结构与算法知识点

<转> 一.数据结构部分 1.数组和链表的区别.(很简单,但是很常考,记得要回答全面) C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小.而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费.链表是一种常见的数据组织形式,它采用动态分配内存的形式实现.需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪

四 数据结构与算法总结(一)

转载:http://blog.csdn.net/jie1991liu/article/details/8167194 一.数据结构部分 1.数组和链表的区别: C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小.而在实际应用中 ,用户使用数组之 前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费 .链表是一种常见的数据组织形式,它 采用动态分配内存的形式实现.需要时可以用ne

数据结构之自建算法库——二叉树的链式存储及基本运算

本文是数据结构基础系列(6):树和二叉树中第9课时二叉树的基本运算及其实现的例程. 单链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:btree.h,包含定义顺序表数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; //

数据结构之自建算法库——稀疏矩阵的三元组表示

本文针对数据结构基础系列网络课程(5):数组与广义表中第3课时稀疏矩阵的三元组表示. 稀疏矩阵的三元组表示相关的算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:tup.h,包含定义稀疏矩阵的三元组表示数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef TUP_H_INCLUDED #define TUP_H_INCLUDED #define M 6 #define N 7 #define MaxSize 100 //矩阵中非零元素最多个数 typedef int Ele

数据结构之自建算法库——广义表

本文针对数据结构基础系列网络课程(5):数组与广义表中第6课时广义表的存储结构及基本运算的实现. 广义算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:glist.h,包含定义稀疏矩阵的三元组表示数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef GLIST_H_INCLUDED #define GLIST_H_INCLUDED typedef char ElemType; typedef struct lnode { int tag; //节点类型标识 union {

数据结构之自建算法库——单链表

本文针对数据结构基础系列网络课程(2):线性表中第10课时单链表基本操作的实现,建立单链表数据存储结构基本操作的算法库. 按照"0207将算法变程序"[视频]部分建议的方法,建设自己的专业基础设施算法库. 单链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:linklist.h,包含定义顺序表数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDED typedef

数据结构之自建算法库——循环双链表

本文针对数据结构基础系列网络课程(2):线性表中第13课时循环链表. 按照"0207将算法变程序"[视频]部分建议的方法,建设自己的专业基础设施算法库. 双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:cdlinklist.h,包含定义双链表数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef CDLINKLIST_H_INCLUDED #define CDLINKLIST_H_INCLUDED //循环双链表基本运算函数 typedef int E