栈和队列

从本章开始,我们来看两个平常可能听到的比较多的名词,那就是栈和队列,其实严格意义上来说,栈和队列也属于线性表,因为它们也都用于存储逻辑关系为『一对一』的数据,但由于它们比较特殊,所以我们在此将它们两个单独拿出来进行了解

使用栈结构存储数据,讲究『先进后出』,即最先进栈的数据,最后出栈,而使用队列存储数据,讲究『先进先出』,即最先进队列的数据,也最先出队列,既然栈和队列都属于线性表,所以根据线性表分为顺序表和链表的特点,栈也可分为顺序栈和链表,队列也分为顺序队列和链队列

因为篇幅有限,本篇主要介绍栈的相关内容,而关于队列的相关内容可以见 队列

双向链表与双向循环链表

在之前的章节当中,我们介绍过了 单链表循环链表 相关内容,今天我们就来看看它们的升级版本,也就是所谓的双向链表与双向循环链表

循环链表

我们在之前的章节当中介绍过了 线性表(单链表),对于单链表而言,由于每个结点只存储了向后的指针,到了尾部标识就停止了向后链的操作(也就是 null,空指针),所以说按照这样的方式,只能索引后继结点而不能索引前驱结点,所引起的问题也是显而易见的,比如如果不从头结点出发,就无法访问到全部结点,遇到这种情况,我们就可以采用我们今天将要介绍到的循环链表

静态链表

我们都知道,C 语言是一门伟大都语言,它都魅力在于指针都灵活性,使得它可以非常容易的操作内存中的地址和数据,这使得它比一些其他的高级语言更加灵活和方便,但是在一些高级语言当中,比如 Java 中的面向对象,就是使用对象引用机制间接的实现了指针的某些功能

静态链表其实是为了给没有指针的编程语言设计的一种实现单链表功能的方法,尽管我们可以使用单链表,但是静态链表的思想是非常巧妙的,应该有所了解

线性表(单链表)

在之前的章节当中我们介绍了 线性表(顺序存储结构),它最大的缺点就是插入和删除的时候需要移动大量元素,这显然就需要耗费时间,如果我们想要解决这个问题,就需要考虑一下是如何导致这个问题出现的原因,即为什么当插入和删除的时候,需要移动大量元素?

体系结构与操作系统

最近在复习相关内容,感觉对于操作系统方面的知识都是一片空白,所以打算简单的学习学习,顺便简单的汇总整理一下,其实也就是一些基本概念的介绍,主要方便时不时回来看看复习一下

线性表(顺序存储结构)

在之前的 数据结构与算法 的章节当中,我们介绍了什么是数据结构和时间复杂度的相关概念,那么在这一章,我们就正式的开始深入的了解它们,我们就从最基本的线性表和线性表当中的顺序存储结构开始

数据结构与算法

最近打算趁着过年这段时间,从头的开始梳理一下数据结构与算法的相关知识,一步一步慢慢来进行学习,在这里顺便记录一下相关笔记,方便以后进行复习

主要参考的是 大话数据结构数据结构与算法分析,方向也主要是偏向于 JavaScript 当中的实现

既然是数据结构与算法,那么我们就先来看看什么是数据结构

前端字体优化

最近在工作当中遇到了关于前端字体优化的问题,主要是公司有一款产品是一个在线的编辑工具,其中可以提供给用户各种不同的字体来进行编辑操作,所以在载入编辑区的过程当中会变得十分缓慢,所以特意抽了些时间研究了一下,在这里顺便记录一下

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×