栈、队列和链表

作者: b64c74899092 | 来源:发表于2016-06-05 14:52 被阅读734次

基本数据结构

栈和队列

栈和队列都是动态集合。栈实现的是一种后进先出策略。队列是一种先进先出策略。

栈上的insert操作称为push,无元素参数的delete操作称为pop。栈顶为空时表示栈不含任何元素,即栈为空。如果试图对一个空栈执行pop操作,则称为栈下溢,如果试图对一个满栈push,则称为栈上溢。


队列

队列上的insert操作称为入队,delete操作称为出队。如果试图从一个空队列删除一个元素,则队列发生下溢,如果试图向一个满队列插入一个元素,则队列发生上溢。

链表

链表其中的各个对象按照线性顺序排列。链表的顺序是由各个对象里的指针决定的。链表为动态集合提供了一个简单而灵活的表示方法。

双向链表

每个对象有一个关键字和两个指针,如果哪个元素没有前驱,则该元素就是链表的第一个元素即链表的头。如果哪个元素没有后继,则该元素是最后一个元素即链表的尾。如果头指针指向的是null,则链表为空。


循环链表

头指针的前驱指向链表尾部元素,尾部元素的后继指向头元素。

链表的基本操作

链表的搜索

LIST-SEARCH(L,k)
x = L.head
while x != null and x.key != k
    x = x->next
return x

链表的插入(头插法)

LIST-INSERT(L,x)
x.next = L.head
if L.head != null
    L.head.prev = x
L.head = x
x.prev = null

链表的删除

LIST-DELETE(L,x)
if x.prev != null
    x.prev.next = x.next
else L.head = x.next
if x.next != null
    x.next.prev = x.prev

相关文章

  • 数据结构与算法之数组与链表

    线性表包括数组,链表(单链表,双向链表,循环链表,双向循环链表,静态链表),栈(顺序栈,链式栈),队列(普通队列,...

  • 数据结构与算法之栈与队列

    线性表包括数组,链表(单链表,双向链表,循环链表,双向循环链表,静态链表),栈(顺序栈,链式栈),队列(普通队列,...

  • 常见的数据结构

    常见的数据结构有: 数组 链表单链表、双向链表、循环链表、双向循环链表、静态链表 栈顺序栈、链式栈 队列普通队列、...

  • 基础算法学习与实践

    数组&链表 1. 快慢指针的方式实现判断链表是否有环 栈和队列 1. 栈实现队列(负负得正) ...

  • js实现单链表、队列、栈

    单链表 队列 栈

  • 数据结构

    数据结构 队列&栈&链表&集合&hash表&树&图 队列 先进先出 栈 先进后出 链表 单向链表 双向链表 循环链...

  • 数据结构java描述

    接口 栈 队列 集合 并查集 映射 数组 链表 栈 数组实现 链表实现 队列 数组实现 链表实现 二分搜索树 集合...

  • 算法导论 基本数据结构

    MIT公开课没有讲到的内容,介绍几种基本数据结构- 栈和队列- 链表- 二叉树 栈和队列 栈和队列都是动态集合,元...

  • 第四章_栈和队列_2019-03-20

    基本知识点 栈:先进后出,队列:先进先出 栈和队列都既能用数组实现,又能用链表实现 栈和队列的基本操作:pop()...

  • 数据结构-队列和栈

    队列和栈都是逻辑结构,其物理结构可以用数组和链表表示。只要记住队列和栈数据操作的特殊性,我觉得就能掌握队列和栈了。...

网友评论

本文标题:栈、队列和链表

本文链接:https://www.haomeiwen.com/subject/malrdttx.html