栈和列队的描述

什么是栈,什么是队列。

栈 (Stack)

是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

队列 (Queue)

一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。

时间: 2024-12-28 08:34:46

栈和列队的描述的相关文章

栈和列队

栈(Stack)是一种重要的线性结构,是后进先出(Last in first out,LIFO)的数据结构.它要求只在表尾进行删除和插入操作. 表尾称为栈的栈顶(top),相应的表头称为栈底(bottom). typedef struct { ElemType *base;//栈底 ElemType *top; int stacksize;//最大容量 }sqStack; #define STACK_INIT_SIZE 100 initStack(sqStack *s) { s->base =

用两个栈实现队列-剑指Offer

用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 一个栈的顺序是“后进先出”,再用一个栈把顺序颠倒过来就满足队列的“先进先出”规则了 用两个stack实现,stack1负责进队列,然后从stack2弹栈出队列,若stack2为空,再从stack1弹出到stack2 代码 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new St

转:《链接、装载与库》里的一个错误:关于调用栈

<链接.装载与库>里的一个错误:关于调用栈 按照原文中描述做了一个PPT: 每次执行push指令时,esp都会减4(因为栈是向低地址增长的),每次pop时esp都会加4. 指令:push a 指令:push b 指令: 1.把main方法当前指令的下一条指定地址(即return address))push到栈中. 2.使用call指令调用目标函数体. 指令:将ebp的当前值push到栈中,即saved ebp. 指令:将esp的值赋给ebp,则意味着进入了foo方法的调用栈. 指令:push

数据结构(C实现)------- 链栈

描述:      链栈,即栈的链式存储结构,链栈通常使用不带头结点的单链表来表示,因此其结点的结构和单链表的结点结构相同. 在一个链栈中,栈底就是链表的最后一个结点,而栈顶总是链表的第一个结点.因此,新入栈的元素即为链表中采用头插法新加入的结点,一个链栈可以由栈顶指针唯一确定,当top为NULL时,则表示该栈是一个空的链栈.  实现:   链栈结点的类型描述: typedef int ElemType; typedef struct node{ ElemType data; struct nod

[c++]堆和栈的区别

堆和栈的区别一.预备知识-程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.2.堆区(heap) - 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵.3.全局区(静态区)(static)-,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量

转载:堆和栈的学习

堆和栈的区别一.预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.2.堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.3.全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初

堆和栈的区别 (转贴)

堆和栈的区别一.预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.2.堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵.3.全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量

洛谷P1573 栈的操作 [2017年6月计划 数论11]

P1573 栈的操作 题目描述 现在有四个栈,其中前三个为空,第四个栈从栈顶到栈底分别为1,2,3,…,n.每一个栈只支持一种操作:弹出并 压入.它指的是把其中一个栈A的栈顶元素x弹出,并马上压入任意一个栈B中.但是这样的操作必须符合一定的规则才能进行.规则1:A栈不能为空.规则 2:B栈为空或x比B栈栈顶要小. 对于给定的n,请你求出把第四个栈的n个元素全部移到第一个栈的最少操作次数. 由于最少操作次数可能很多,请你把答案对1000007取模. 输入输出格式 输入格式: 一行,一个n 输出格式

【Java EE 学习第69天】【struts2】【paramsPrepareParamsStack拦截器栈解决model对象和属性赋值冲突问题】

昨天有同学问我问题,他告诉我他的Action中的一个属性明明提供了get/set方法,但是在方法中却获取不到表单中传递过来的值.代码如下(简化后的代码) 1 public class UserAction implements modelDriven<User>(){ 2 private String name; 3 private User model; 4 public void setName(String name){ 5 this.name=name; 6 } 7 public St