数据结构-栈,队列,链表,树

 1 class ListNode {
 2     constructor(key = null, next = null) {
 3         this.key = key;
 4         this.next = next;
 5     }
 6
 7     push(next) {
 8         this.next = next;
 9         return next;
10     }
11
12     reverse() {
13         if (this.key !== null) {
14             console.log("不是NIL");
15             return;
16         }
17         var Nil = this;
18         var pre = this.next;
19         var cur = pre.next;
20         pre.next = null;
21         while (cur !== null) {
22             console.log("pre:", pre.key, "cur:", cur.key);
23             var next = cur.next;
24             cur.next = pre;
25             pre = cur;
26             cur = next;
27         }
28         Nil.next = pre;
29         return Nil;
30     }
31
32     toStirng() {
33         var cur = this;
34         while (cur != null) {
35             if (cur.next) {
36                 console.log("the key of this ListNode is: ", cur.key, "the next of this ListNode is: ", cur.next.key);
37
38             } else {
39                 console.log("the key of this ListNode is: ", cur.key, "the next of this ListNode is: null");
40             }
41             cur = cur.next;
42         }
43     }
44 }
45
46
47 var NIL = new ListNode();
48
49 var first = new ListNode(1);
50
51 var second = new ListNode(2);
52
53 var third = new ListNode(3);
54
55
56 NIL.push(first).push(second).push(third);
57
58 var temp = NIL.next;
59
60 NIL.reverse().toStirng();

这是前序遍历

时间: 2024-10-15 15:56:01

数据结构-栈,队列,链表,树的相关文章

数据结构---栈的链表实现

栈的链表实现C代码如下: #include <stdio.h> typedef int ElemType; typedef struct node { ElemType Data; struct node *next; }Node; typedef struct stack { Node *top; }Stack; //初始化栈 void InitStack(Stack *S) { S->top=NULL; } //入栈 int PushStackValue(Stack *S) { pr

基本数据结构:栈-队列-双向队列

栈 概念:栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端.这一端通常称为“顶部”.与顶部对应的端称为“底部”.栈的底部很重要,因为在栈中靠近底部的元素是存储时间最长的.最近添加的元素是最先会被移除的.这种排序原则有时被称为 LIFO,后进先出.它基于在集合内的时间长度做排序.较新的项靠近顶部,较旧的项靠近底部. 栈的例子很常见.几乎所有的自助餐厅都有一堆托盘或盘子,你从顶部拿一个,就会有一个新的托盘给下一个客人.想象桌上有一堆书, 只有顶部的那本书封面可见,要

数据结构-栈、队列和链表

一.栈stack 是后进先出的数据结构 栈顶指针指的始终是栈最上方元素的一个标记,即放在最上面的元素.栈顶元素为空时令top为-1. 在使用pop()函数和top()函数时,需要使用empty()判断栈是否为空. 在STL中stack容器来编写代码,STL定义stack的复杂度是O(1). 常见函数: clear() size() empty() push() pop() top() 二.队列queue 是一种先进先出的数据结构 需要一个队首指针front来指向队首元素的前一个位置,而使用一个队

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

&lt;数据结构与算法分析 C++描述&gt; 表/栈/队列

这一章主要内容: * 抽象数据类型(ADT)的概念 * 实现表/栈/队列 * 了解这三个数据结构的应用场景 1. ADT ADT: abstract data type, 是抽象的数学模型,在该模型上定义了一系列的操作.使用它的人,不需要了解它的存储方式,只关心它的逻辑特征.可以使用三元组的方法来表示(D,S,P),D是数据对象,S是数据之间的关系,P是对数据的基本操作,具体介绍,可以参考帖子:点击打开链接 2. 表ADT 表的数据自然是单个元素,而元素之间的关系是前驱与后继,操作包括查找/插入

数据结构-栈与队列

相比于数组这种存储数据的数据,栈(Stock)和队列(Queue)主要作用是在程序中作为构思算法的辅助工具,是一种程序员开发过程中的便利工具.Stock和Queue具有访问受限以及更加抽象的特征. 一.栈 栈只允许访问最后一个插入的元素,即栈是先进后出(FILO)的一种数据结构.栈主要提供的算法包括push,pop和peek.其中push是插入一个元素,pop是弹出最近添加的一个元素,peek是返回最近添加的一个元素. 栈的底层实现可以是数组,也可以是链表,这里采用数组实现一个栈,代码如下: 1

数据结构学习——栈的链表实现(程序化)

关于栈的基本概念以及和Catalan数的关系,可以参见我的其他文章 参考资料<数据结构与算法分析--C语言描述> #include<stdio.h> #include<stdlib.h> /*栈的链表实现*/ typedef struct StackNode { struct StackNode *next; int data; }StackNode,*Stack; Stack CreateStack(void);//创建一个空栈 void MakeEmpty(Stac

C数据结构-栈和队列,括号匹配举例

1.栈和队列是两种特殊的线性表 运算操作被限定只能在表的一端或两端插入,删除元素,故也称它们为限定的线性表结构 2.栈的基本运算 1).Stackinit(&s) 构造一个空栈 2).Stackempty(s) 判断s是否为空栈,当s为空栈时,函数返回值1 否则 0 3).Push(&s,x)  在栈s 的顶部插入元素x,简称将x入 栈 4).Pop(&s,&x) 在栈s 中删除顶元并将其值保存在x单元中返回,简称将x出栈 5)Gettop(s,&x)  读s栈中的

数据结构——栈和队列相关算法实现

数据结构栈和队列的基本算法实现 限定性线性表--栈 栈的定义 栈作为一种限定性的线性表,是将线性表的插入和删除操作限制为仅在表的一端进行. 基本算法演示 /* 栈的常见操作: 1.初始化栈 2.元素进栈 3.元素出栈 4.栈的遍历 5.判断栈是否为空栈 6.清空整个栈 */ # include <stdio.h> # include <stdlib.h> typedef struct Node { int date; struct Node * pNext; }NODE,* PNO

数据结构之队列and栈总结分析

一.前言: 数据结构中队列和栈也是常见的两个数据结构,队列和栈在实际使用场景上也是相辅相成的,下面简单总结一下,如有不对之处,多多指点交流,谢谢. 二.队列简介 队列顾名思义就是排队的意思,根据我们的实际生活不难理解,排队就是有先后顺序,先到先得,其实在程序数据结构中的队列其效果也是一样,及先进先出.    队列大概有如下一些特性: 1.操作灵活,在初始化时不需要指定其长度,其长度自动增加(默认长度为32) 注:在实际使用中,如果事先能够预估其长度,那么在初始化时指定长度,可以提高效率