博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TypeScript实现数据结构(一)栈,队列,链表
阅读量:6832 次
发布时间:2019-06-26

本文共 3191 字,大约阅读时间需要 10 分钟。

最近在学习typescript,就想着用typescript自己练习一些基本的数据结构,记录一下,读者有什么想法和建议也可以交流一下。

class Stack
{ private items = null; constructor() { this.items = new Array
(); } push(data: T): void { this.items.push(data); } pop(): T { return this.items.pop(); } top(): T { return this.items[this.items.length - 1]; } isEmpty(): boolean { return this.items.length === 0; } size(): number { return this.items.length; } clear(): void { this.items = new Array
(); } print(): void { console.log(this.items); }}

队列

class Queue
{ private items = null; constructor() { this.items = new Array
(); } enqueue(data: T): void { this.items.push(data); } dequeue(): T { return this.items.shift(); } head(): T { return this.items[0]; } size(): number { return this.items.length; } clear(): void { this.items = new Array
(); } isEmpty(): boolean { return this.items.length === 0; } tail(): T { return this.items[this.items.length - 1]; } print(): void { console.log(this.items); }}

链表

class LinkNode
{ public data: T; public next: LinkNode
; constructor(data: T) { this.data = data; this.next = null; }}class LinkList
{ private head: Node
; private length: number; private tail: Node
; constructor() { this.head = null; this.tail = null; } append(data: T): boolean { let new_node = new Node(data); if (this.head == null) { this.head = new_node this.tail = new_node; } else { this.tail.next = new_node; this.tail = this.tail.next; } this.length++; return true; } len(): number { return this.length; } insert(index: number, data: T): boolean { if (index == this.length) { return this.append(data); } else { let insert_index = 1; let cur_node = this.head; while(insert_index < index) { cur_node = cur_node.next; insert_index++; } let next_node = cur_node.next; let new_node = new Node(data); cur_node.next = new_node; cur_node.next.next = next_node; } this.length++; return true; } remove(index): Node
{ if (index < 0 || index >= this.length) { return null; } else { let del_node = null; if (index == 0) { del_node = this.head; this.head = this.head.next; } else { let del_index = 0; let pre_node = null; let cur_node = this.head; while (del_index < index) { del_index++; cur_node = cur_node.next; } pre_node = cur_node; cur_node = cur_node.next; pre_node.next = cur_node; //如果删除的是尾节点 if (cur_node == null) { this.tail = pre_node; } this.length--; return del_node; } } } get(index): Node
{ if (index < 0 || index > this.length) { return null; } let node_index = 0; let cur_node = this.head; while(node_index < index) { node_index++; cur_node = cur_node.next; } return cur_node; } print(): void { let cur = this.head; while(cur != null) { console.log(cur.data); cur = cur.next; } }}

转载地址:http://msnkl.baihongyu.com/

你可能感兴趣的文章
laravel 分页
查看>>
如何给在用的nginx添加新模块
查看>>
自然语言处理工具HanLP被收录中国大数据产业发展的创新技术新书《数据之翼》...
查看>>
单臂路由的配置
查看>>
jQuery相关面试题
查看>>
zabbix监控软件
查看>>
Linux搭建DNS服务
查看>>
前端开发程序员薪资报告:企业到底想要什么样的前端?
查看>>
JavaScript 代码整洁之道
查看>>
棋牌管理系统用例图
查看>>
解决embed标签显示在div上层,非设置z-index
查看>>
实现 node_modules 共享
查看>>
删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个...
查看>>
返回顶部按钮
查看>>
程序员面试题100题第05题——查找最小的K个元素
查看>>
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序×××之 --- 操作权限...
查看>>
linux工作进程状态显示---------top命令
查看>>
RHEL7下 nginx 的详细配置
查看>>
Linux 任务控制的几个技巧( &, [ctrl]-z, jobs, fg, bg, k...
查看>>
《Play for Java》学习笔记(四)Controller
查看>>