精华内容
下载资源
问答
  • 用c++编写先进先出页面置换算法,没有用队列,用数组
  • 单片机实现数组先进先出

    千次阅读 2017-03-04 10:17:36
    因为有时候上位机处理不及时,MCU需要缓冲一些数据,我自己琢磨着怎么做这个,所以用代码实现了如下; /******************************************************** ...//提取数组内最前面的数;

    因为有时候上位机处理不及时,MCU需要缓冲一些数据,我自己琢磨着怎么做这个,所以用代码实现了如下;

    /********************************************************
    函数原型:
    函数功能:堆栈初始化
    输入参数:
    输出参数:
    说    明:
    *********************************************************/
    #define StackSize 8
    unsigned char StackTemp[StackSize];


    void StackInitinal(void)
    {
    u8 Num;

    for(Num =0; Num <StackSize; Num++)
    {
    StackTemp[Num] =0;
    }
    }

    /********************************************************
    函数原型:
    函数功能:事件堆栈
    输入参数:
    输出参数:
    说    明:
    *********************************************************/
    void PushINStack(unsigned char Event) //压栈
    {
    unsigned char PushINSta =0, Num =StackSize, NullNumber =0;       

    if(Event ==0)    
    {
    return; 
    }
    while(Num--) //查询开始    
    {
    if(StackTemp[Num] ==Event) //查询是否有一致的       
    {            
    PushINSta =2;            
    break;        
    }        
    else if(StackTemp[Num] ==0) //位置是否为空        
    {
    NullNumber =Num; //记录空的位置            
    PushINSta =1;        
    }    
    }    
    if(PushINSta==1)    
    {
    PushINSta =0;
    StackTemp[NullNumber] =Event; //事件存入空的位置        
    }    
    else if(StackTemp[StackSize-1] !=0)    
    {
    if(PushINSta ==0)        
    {
    StackTemp[StackSize-1] =Event;
    return;        
    }    
    }
    }

    /********************************************************
    函数原型:
    函数功能:事件出栈
    输入参数:
    输出参数:
    说    明:
    *********************************************************/
    unsigned char PushOUTStack(void) //出栈
    {
    unsigned char Num =0, Push =0, temp =0, temp2 =0;   

    if(StackTemp[Num] !=0) //第0个寄存器内有数据    
    {
    temp =StackTemp[Num];        
    StackTemp[Num] =0;        
    Push =1;        
    }    
    if(Push ==1) //整理压栈数据    
    {
    while(Push ==1)        
    {
    temp2 =Num+1;            
    if(temp2 <(StackSize))            
    {
    StackTemp[Num] = StackTemp[temp2];
    StackTemp[temp2] =0;            
    }            
    else            
    {
    Push =0;            
    }            
    Num =temp2;        
    }    
    }    
    return temp;
    }


    应用的时候,

    ...

    PushINStack(Event ); //存入事件栈

    ...

    temp =PushOUTStack(); //提取数组内最前面的数;

    展开全文
  • 2.数组实现队列先进先出的数据结构: package data_table.syn.com.common.util; /**  * 数组实现队列结构,先进先出  * @author Administrator  *  */ public class QueueByArray { private ...

    1.自定义Node.java实体类:

    package data_table.syn.com.common.util;
    /**
     * 简单封装Node节点
     * @author Administrator
     *
     */
    public class Node {

    private Object value;// 值
    private Node next; // 下一个对象的地址值
    public Object getValue() {
    return value;
    }
    public void setValue(Object value) {
    this.value = value;
    }

    public Node getNext() {
    return next;
    }
    public void setNext(Node next) {
    this.next = next;
    }
    public Node() {
    super();
    // TODO Auto-generated constructor stub
    }
    public Node(Object value) {
    super();
    this.value = value;
    }



    }

    2.数组实现队列先进先出的数据结构:

    package data_table.syn.com.common.util;
    /**
     * 数组实现队列结构,先进先出
     * @author Administrator
     *
     */
    public class QueueByArray {
    private int size=0;
    private Object[] que=new Object[8];

    public int size() {
    return size;
    }
    /**
    * 进队列
    * @param object
    */
    public void enQue(Object value) {
    if (size>=que.length) {
    Object[] stemp=new Object[que.length*2];
    for(int i=0;i<que.length;i++) {
    stemp[i]=que[i];

    }
    que=stemp;
    }else {

    que[size]=value;
    }

    size++;
    }
    /**
    * 出队列
    * @return
    */
    public Object deQue() {
    if(size<=0) {
    throw new ArrayIndexOutOfBoundsException();
    }

    Object value=que[0]; // 取出第一个存储的值
    que[0]=null;
    if (size>1) {
    for(int i=1;i<size;i++) {
    que[i-1]=que[i];

    }
    }
    size--;
    return value;
    }


    }

    3.单链表实现队列的先进先出的数据结构:

    package data_table.syn.com.common.util;
    /**
     * 但链条实现队列结构,先进先出
     * @author Administrator
     *
     */
    public class QueueByLink {
    private int size=0;
    private Node head=null;
    //private Node behind=null;

    public int size() {
    return this.size;
    }
    /**
    * 进队列
    * @param object
    */
    public void enQue(Object value) {
    Node newNode=new Node(value);
    if (head==null) {
    head=newNode;
    }else {
    /*if (behind==null) { //第二节点
    Node temp=head;
    while (temp.getNext()!=null) {
    temp=temp.getNext();
    }
    temp.setNext(newNode);
    behind=temp;
    }else { // 多个节点
    behind.setNext(newNode);
    behind=behind.getNext();
    }*/
    Node temp=head;
    while (temp.getNext()!=null) {
    temp=temp.getNext();
    }
    temp.setNext(newNode);

    }
    size++;

    }
    /**
    * 出队列
    * @return
    */
    public Object deQue() {
    if (size<=0) {
    throw new ArrayIndexOutOfBoundsException();
    }
    Object value=head.getValue();
    if (size==1) {
    head=null;
    return value;
    }
    head=head.getNext(); // 将头付给它的下一个节点
    return value;
    }


    }

    4.比较性能:

    a1)数组进队列:当存储在数组的长度内,数组直接拿到数组的size,可以直接存值,当存值超出数组的长度,数组需要扩容,性能消耗较大。

    a2)链条进队列:遍历整个链条,取到最后的node节点,存值。

    比较:当存值一定,数组进队列要比链条性能好的多。当存值不定时,性能数组稍差,综合考虑,数组进队列稍胜一筹。

    b1)数组出队列:拿到数组的第一个值出队列,然后将数组其他的元素向前移动,性能较差。数据越大,性能越差。

    b2)链条出队列:拿到head节点出队列,将他的下一个节点赋值为head节点,效率非常高。

    比较:链条远胜于数组

    综合比较:数组与但链条实现队列不分胜负。

    注意:单针对我自己实现的基础上。可以优化。



    展开全文
  • JavaScript模拟实现先进先出、先进出效果 JavaScript模拟实现先进先出、先进出效果

    JavaScript模拟实现先进先出、先进后出效果
    JavaScript模拟实现先进先出、先进后出效果

    展开全文
  • 一:图形分析 二:思路分析 1. 定义一个top来表示入栈的数量...3. 定义一个数组 stack 模拟栈,保存需要入栈的值; 4. 入栈:接收一个值,将值保存到 stack 中,并将 top 的位置上移 ; 5. 出栈:将栈顶top的值取...

    一:图形分析

    在这里插入图片描述

    二:思路分析

    1. 定义一个top来表示入栈的数量(栈顶),当添加一个数据时top会指向新添加的数据;
    2. 设置top = -1;(初始值)默认栈为空,当 top == stack.size() 时表示栈满;
    3. 定义一个数组 stack 模拟栈,保存需要入栈的值;
    4. 入栈:接收一个值,将值保存到 stack 中,并将 top 的位置上移 ;
    5. 出栈:将栈顶top的值取出,并将top下移,重新标记栈顶的位置;
    

    三:实现代码

    //定义一个 ArrayStack 表示栈结构
    class ArrayStack {
    	private int maxSize; // 栈的大小
    	private int[] stack; // 数组,模拟一个栈,用于存放
    	private int top = -1; // 表示栈顶,初始为-1
    
    	public ArrayStack(int maxSize) {
    		this.maxSize = maxSize;
    		stack = new int[this.maxSize];
    	}
    
    	// 栈满
    	public boolean isFull() {
    		return top == maxSize - 1;
    	}
    
    	// 栈空
    	public boolean isEmpty() {
    		return top == -1;
    	}
    
    	// 入栈
    	public void push(int value) {
    		// 判断是否栈满
    		if (isFull()) {
    			System.out.println("栈满~~");
    			return;
    		}
    		top++;
    		stack[top] = value;
    	}
    
    	// 出栈-将栈顶的数据返回
    	public int pop() {
    		// 判断是否栈空
    		if (isEmpty()) {
    			throw new RuntimeException("栈空,没有数据~~");
    		}
    		int value = stack[top];
    		top--;
    		return value;
    	}
    
    	// 显示栈中的数据-从栈顶开始显示
    	public void list() {
    		// 判断是否栈空
    		if (isEmpty()) {
    			System.out.println("栈空~~");
    			return;
    		}
    		//从栈顶开始展示数据
    		for (int i = top; i >= 0; i--) {
    			System.out.printf("stack[%d]=%d\n", i, stack[i]);
    		}
    
    	}
    }
    
    展开全文
  • i = []#定义空白列表 def push(a):#定义增加函数 i.append(a) def view():#定义打印函数 print(i) while True: print('请输入你的操作:') print('push:u')#增加元素 print('pop :o')#移除元素 ...
  • SCL语言----先进先出

    2020-12-09 20:13:56
    西门子SCL语言处理数据的“先进先出”处理案例 先进先出,是指根据先入库先发出的原则,对于发出的存货以先入库存货的单价计算发出存货成本的方法。 (1)、建立数据 (自己设计,自己理解的,如有错误请指教) ...
  • 而队列是先进先出,就如同银行的排号机 PHP中将数组当做一个栈,主要是使用array_push()和array_pop()两个系统函数来完成。入栈主要是利用array_push()函数向第一个参数的数组尾部添加一个或多个元素,...
  • public class ResizingArrayStack&lt;Item&gt; implements Iterable&lt;Item&gt;{ private Item[] a=(Item[]) new Object[1];... private int N=0;... public boolean isEmpty(){return N==0;...
  • 看下数据结构中一种重要的数据存储形式,链表,下面两段是来自百度百科: 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每...
  • Golang实现先进先出队列

    千次阅读 2019-08-26 15:28:03
    实现起来很简单,Golang这门语言我非常喜爱,它特别照顾代码洁癖症患者,在vscode中安装相应的插件之后只要command+s保存代码的时候文件会自动格式化,非常整齐舒服,go的代码简洁高效,并且内存安全,容易写优秀...
  • 对于变得强大,首先你能尽量做的,就是接受弱小的事实。 大部分情况下,我们在从输入流中读出数据的时候,不会对...比如有些数据存储方式如果用队列(先进先出FIFO)的话,后面处理数据会更加方便。有一些存进栈...
  • Class 表示对象的先进先出(FIFO)集合。 使用Queue&lt;T&gt;如果需要访问存储在集合中的相同顺序(进出同序)中的信息。 使用Stack&lt;T&gt;如果你需要按 后进先出(LIFO)的顺序访问的信息。 使用...
  • //用数组栈(先进后出) import java.util.Collection; import java.util.NoSuchElementException; public class ArrayStack { private int initalSize = 5; private Object[] stack; private int head; ...
  • /** * [Queue] * @param {[Int]} size [队列大小] */ function Queue(size) { var list = []; //向队列中添加数据 this.push = function(data) { if (data==null) { return false;... ...
  • FIFO先进先出页面置换算法实现

    千次阅读 2018-11-26 00:27:50
    FIFO先进先出页面置换算法,是最早出现的页面置换算法,该算法总是淘汰最先进入内存的页面。以下是代码: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;vector&gt; ...
  • 队列--一种具有先进先出特点的数据结构,在我们生活中非常常见。队列可采用数组、链表存储。
  • 一个定长数组记录20个赛跑成绩,未满20个时填充0,20个之后,将最早的踢,将最新的数据排到末尾,该怎么操作
  • 博图SCL_先进先出排序法

    千次阅读 2020-06-24 22:28:25
    DB区按写入数据的先后顺序存储,遵循先进先出原则,且移出的数据,后续位置数据自动以压栈的方式补充 1、主程序调用及数据块定义 主程序可调用多次数据块,填写不同区域的引脚可排序多个数据区 2、SCL程序 程序...
  • 队列--先进先出的线性表

    千次阅读 2020-07-29 20:37:47
    队列的特点是先进先出: 先进,表示队列的数据新增操作只能在末端进行,不允许在队列的中间某个结点新增数据; 先出,队列的数据删除操作只能在始端进行,不允许在队列的中间某个结点删除数据。也就是说队列的增...
  • 使用c++语言编写的模拟实现先进先出页面置换算法,定义了一个FIFO类,FIFO类有一个str数组来存放页面走向;一个base数组表示物理块;一个int型变量来存放最先进入物理块的下标。这是个比较简单的代码,
  • 先进先出缓存算法(FIFO)--java实现

    万次阅读 2016-07-13 21:48:25
    操作系统中的虚拟内存管理系统可采用先进先出算法的方式缓存。 当请求的内存页不在缓存中。且缓存已满时,应从缓存中删除保存时间最长的页面, 从而为请求页面腾出空间,如果缓存未满,可直接将请求页面添加到缓存...
  • 先进先出(FIFO)置换算法

    万次阅读 2013-01-13 19:05:14
    这里,我们只需要设置一个先进先出队列就可以。 最先进入内存的页面最早被转换出去。   例如:假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:  7,0,1,2,0,3,0,4,2,3,0,3...
  • 队列是一种先进先出(FIFO)的数据结构。 ArrayDeque: 1.简介: ArrayDeque是JDK1.6中引入的实现。 ArrayDeque继承了AbsrtactCollection抽象类,实现了Deque接口。 因此ArrayDeque同时拥有这两者的特性,本身队列是...
  • 与日常生活中的排队相类似,队列是一种遵循先进先出原则的数据结构。本文主要介绍了队列的定义、利用数组实现队列、利用链表实现队列等内容。
  • 用c++实现顺序队列(用数组实现)

    千次阅读 2019-07-02 12:18:21
    //先进先出 或者后进出 //队首 队尾 //对列的操作 //1.push 2.pop 3.front 4.rear 5.isempty #include "queue.h" int main() { queue<int> q(12); q.push(5); q.push(9); q.push(11); q.pop(); cout(); ...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    split():分割字符串,返回一个分割的字符串数组。 getBytes():返回字符串的 byte 类型数组。 length():返回字符串长度。 toLowerCase():将字符串转成小写字母。 toUpperCase():将字符串转成大写字符。 ...
  • 而队列是先进先出。就如同银行的排号机 PHP中将数组当做一个栈。主要是使用array_push()和array_pop()两个系统函数来完毕。入栈主要是利用array_push()函数向第一个參数的数组尾部加入一个或多个元素。...
  • 栈是一种遵循先进后出原则的数据结构,在实际开发中有着广泛的应用(例如Java虚拟机中的操作数栈)。本文主要介绍了栈的定义、利用数组实现栈、利用链表实现栈等内容。
  • 2.用数组储存放入内存的页面,在分配内存页面数小于进程页面数时,最先运行的m个页面放入内存; 3.这时有需要处理新的页面,则将与原来的内存数组中的m个页面进行比较,当内存中不存在新页面号时调出最先进入的页面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,101
精华内容 40,840
关键字:

数组是先进先出还是先进后出