【数据结构】线性结构:栈&队列&数组
来源:互联网 发布:java 程序员速成班 编辑:程序博客网 时间:2024/05/16 09:10
栈和队列是插入、删除受限制(只能在表的一端插入、删除,不能从中间插入、删除)的线性表。
它们的存储结构,以及存储结构下不同操作的属性和普通线性表是一样的。因为受限制,理解起来反而更简单。
栈(LIFO—Last In First Out)是后进先出的线性表,采用顺序存储时,称顺序栈;采用链式存储时,称链栈。
允许插入和删除的称为栈顶;另一端称为栈底。空栈出栈称“下溢”,满栈入栈称“上溢”。
顺序栈的进栈操作:1、栈顶下标值加1;2、栈顶赋值。
顺序栈的出栈操作:1、栈顶下标值减1。
顺序栈的取栈顶元素操作:按下标值直接取,时间复杂度为O(1)(顺序表也是直接取O(1))。
链栈的进栈操作(前插):1、新增结点指向后继结点;2、头结点指向新增结点。【栈只能在栈顶进行操作,因此只能用前插算法,删除操作类似。】
链栈的出栈操作:1、取出栈顶元素;2、头结点指向原栈顶的下一个结点;3、释放原栈顶元素。
链栈的取栈顶元素操作:根据指针走向直接取(相当于单链表定位算法中的最优情况——取首结点),时间复杂度为O(1)。
队列(FIFO—First In First Out)是先进先出的线性表,采用顺序存储时,称顺序队列;采用链式存储时,称链队列。
顺序队列因为操作在表的两头,首指针front,尾指针rear。往往用循环队列解决“假溢出”,因此顺序队列常用循环队列。
循环队列因为是环状的,通常用取余操作确定存储位置。
无论循环队列空还是满都有front=rear,因此一般设置队列元素只剩下一个单元(.rear+1)是认为队满。
循环队列的入队列操作:1、rear值加1;2、新增结点赋值。【入队列都是从队尾处入,出队列都是从队首处出。】
循环队列的出队列操作:1、front值加1。
循环队列的取队列首元素:1、取当前front+1的值。
链队列是动态申请空间,不会出现队列满的情况,front=rear时,队列为空。
链队列的入队列操作:1、原尾结点指向新增结点;2、重置队列rear。
链队列的出队列操作:1、取出原首结点;2、头结点指针指向新首结点;3、释放原首结点。
链队列的取队列首元素:直接取当前首结点值。
数组是线性表的一种推广,其规律也符合一般线性表的规律。在类C语言的编译程序中,数组采用的是以行为主序的存储方法,也有以列为主序的存储方法。
- 【数据结构】线性结构:栈&队列&数组
- 数据结构-线性结构-队列
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- 数据结构-线性结构之队列
- 数据结构 线性结构中的数组
- 数据结构之线性结构--数组
- 数据结构全攻略--线性结构不攻自破之栈和队列
- 数据结构_线性结构_栈与队列
- 数据结构_线性结构_栈与队列
- 《数据结构导论》——线性表、栈、队列、数组
- 【数据结构练习】基于线性结构的队列
- [数据结构]线性结构——队列
- 数据结构之线性结构---队列 顺序储存
- 数据结构之线性结构---队列 链式储存
- [数据结构]线性结构——队列
- 常见的线性列表结构---【数组、链表、栈、队列、堆】
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- 数据结构之数组实现基础队列结构
- Log4j官方文档翻译(八、文件输出)
- iOS --- 多语言适配的注意事项
- css多个class时的选择器用法
- 归并排序(链表结构)
- unity简易小地图的实现(NGUI)
- 【数据结构】线性结构:栈&队列&数组
- c++primer plus第十七章-输入和输出概述
- 值得深思的连续赋值--赋值运算符运算顺序
- java解析XML配置文件及log4j开源日志系统
- 第三章:数据结构与算法javascript描述: 列表
- 匿名内部类的总结
- ZOJ 3822 Domination [概率DP]
- iOS经典讲解之地图定位请求位置信息时出现的问题
- 【解决】该任务映像已损坏或已篡改。(异常来自HRESULT:0x80041321)