排行榜 统计
  • 文章总数:649 篇
  • 评论总数:10704 条
  • 分类总数:4 个
  • 最后更新:4月4日

循环队列出队-单个指针下循环链表的入队与出队

本文阅读 2 分钟
首页 网络技巧 正文
本文最后更新于2022年12月08日,已超过878天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

您阅读这篇文章共耗时:

  循环链表的入队出队

  题目是这样的: 设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。编写相应的入队和出队程序。

  如果带头尾指针那就很简单了,不带头尾指针只能在函数中新建工作指针来操作。

  思考方向

  队列嘛,先进先出,用循环链表存储,再有个尾指针,逻辑结构就是这样的

  入队

  入队分三步:

  新结点指向头结点

  尾结点指向新节点

  尾指针指向新的尾结点

  出队

  先进先出嘛,头结点删了就行

  理论上直接尾结点指向第二个就完事了

  但这样只是找不到了原来的头结点,它依然是存在于内存中的,虽说眼不见为净吧

  ,但它确确实实是存在的循环队列出队循环队列出队,一旦堆积,这队列容量就会越来越小。

  所以还是要把它删除掉的(delete)

  具体代码

  存储数据就以int为例,其他的自己适应性更改就行

  结点

   struct Node{

        int data;
        Node* next;
    };//创建结构体——结点

  循环队列

   class CirQueue {

    private:
        Node* p;
    public:
        CirQueue();
        CirQueue(int a[], int n);
        void EnQueue(int a);
        void DeQueue();
    };
    CirQueue::CirQueue() {
        p = nullptr;
    }
    CirQueue::CirQueue(int a[], int n) {
        p = new Node;
        p->data = a[0];
        Node* q = p;//存储首地址,用于最后尾巴指过来
        for (int i = 1; i next = new Node;
            p = p->next;
            p->data = a[i];        
        }
        p->next = q;
    }//初始化循环队列

  入队

void CirQueue::EnQueue(int a) { Node* q = new Node; q->data = a; q->next = p->next;//第一步 p->next = q;//第二步 p = q;//第三步 cout [1]: https://xuan.ddwoo.top/index.php/archives/528/ [2]: https://xuan.ddwoo.top/index.php/archives/530/ [3]: https://xuan.ddwoo.top/index.php/archives/535/  
本文来自投稿,不代表本站立场,如若转载,请注明出处:http://xuan.ddwoo.top/index.php/archives/540/
-- 展开阅读全文 --
循环队列出队-栈和队列的实现
« 上一篇 12-08
spring 有哪些日志级别-LogBack 日志等级设置无效,原因竟然是因为这个
下一篇 » 12-08
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

发表评论

本站已加入互联网信息服务许可,请规范您的言行哦~

成为第一个评论的人

作者信息

热门文章

珍惜时间哦~

今日一言

- -
加载中...
换一句

标签TAG

热评文章