SV学习笔记—队列及方法

SV引入一个新的数据类型-队列,它结合了链表和数组的优点,可以在队列中的任何地方添加或者删除元素;但队列不是数组,它的元素个数不一样,也不需要new,并且很方便添加或删除元素。

队列的声明使用[$],元素的编号从0到$:

program example1;
    int j=1, q2[$]={3,4}, q[$]={0,2,5};//声明队列,并初始化一些元素

    initial begin
        q.insert(1, j);//在q队列的第二个元素(排列位置从0开始数)之前插入j,队列q变成{0,1,2,5}
        q.insert(3,q2[0]);//在q队列的第四个元素(排列位置从0开始数)之前插入q2队列的第0个元素,q变成{0,1,2,3,5}
        q.insert(4,q2[1]);// 插入队列q2的元素,队列q变成{0,1,2,3,4,5}
        $display(q);
        q.delete(1);//删除第1个元素(排列位置从0开始数), 队列变成{0,2,3,4,5}
        q.push_front(6);//在队列前插入6, q队列变成{6,0,2,3,4,5}
        j = q.pop_back;//把最后一个元素pop出来,赋值给j, j=5, q队列变成{6,0,2,3,4}
        q.push_back(8);//在队列尾部插入8, q队列变成{6,0,2,3,4,8}
        j = q.pop_front;//把第一个元素pop出来,赋值给j, j=6, q队列变成{0,2,3,4,8}
        foreach (q[i]) $display(q[i]); //打印整个队列
        q.delete();//删除整个队列
    end
endprogram

队列索引的另一种表示方法,如果把$放在一个范围表达式的左边,那么$代表最小值;如果把$放在一个范围表达式的右边,那么$代表最大值。例如:队列共有4个元素[0:3], [$:2]代表[0:2], [2:$]代表[2:3] 。

program example2;
    int j=1, q2[$]={3,4}, q[$]={0,2,5}; //声明队列,并初始化一些元素

    initial begin
        q={q[0], j, q[1:$]};//在q队列q[0]元素后插入j, 队列q变成{0,1,2,5}
        q={q[0:2], q2, q[3:$]};//在q队列q[0:2]元素后插入队列q2,队列q变成{0,1,2,3,4,5}
        q={q[0], q[2:$]};//删除第1个元素, 队列变成{0,2,3,4,5}
        q={6,q};//在队列前插入6, q队列变成{6,0,2,3,4,5}
        j = q[$];//j=5
        q=q[0:$-1];//删除最后一个元素, q队列变成{6,0,2,3,4}
        q ={q,8};//在队列尾部插入8,q队列变成{6,0,2,3,4,8}
        j = q[0];//j=6,q=q[1:$],去掉第一个元素,q队列变成{0,2,3,4,8}
        q={};//删除整个队列
    end
endprogram

上面两种操作方法都可以很方便的对队列中的元素进行操作,选择自己顺手的即可。 

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值