当前位置: 首页 > news >正文

泉山区城乡建设局网站360网站推广官网网址

泉山区城乡建设局网站,360网站推广官网网址,店铺在百度免费定位,网页设计尺寸代码C数据结构与算法 目录 队列介绍 队列这种容器,就像大家排队上公交车一样。 第一个来到的人排在最前面; 最后来的排在最后面; 第一个先上车(离开队列); 队列的接口 队列是有如下接口的容器&#xff1…

C++数据结构与算法 目录

队列介绍

队列这种容器,就像大家排队上公交车一样。

第一个来到的人排在最前面;

最后来的排在最后面;

第一个先上车(离开队列);

队列的接口

队列是有如下接口的容器:

class Queue
{
public:const int& first(void) const;//队列的对头(第一个元素),最先进队列的元素inline bool empty(void) const;//判断队列里是否没有元素(空队列)inline size_t size(void) const;//返回队列元素数量void enqueue(const int& item);//将元素item进队列void dequeue(void);//将对头(队列的第一个元素)出队列(从队列中删除)void clear(void);//清空队列中的所有元素

实现思路

由于双链表的接口覆盖了队列的接口,所以可以使用双链表来实现一个队列。

这样就可以在双链表外面封装出一个队列的类。

在实现的时候,队列的接口只需要调用双链表的接口即可。

题目如下

#include <iostream>
#include <iomanip>
#include <list>
using namespace std;//------下面的代码是用来测试你的代码有没有问题的辅助代码,你无需关注------
#include <algorithm>
#include <cstdlib>
#include <iostream> 
#include <vector>
#include <utility>
using namespace std;
struct Record { Record(void* ptr1, size_t count1, const char* location1, int line1, bool is) :ptr(ptr1), count(count1), line(line1), is_array(is) { int i = 0; while ((location[i] = location1[i]) && i < 100) { ++i; } }void* ptr; size_t count; char location[100] = { 0 }; int line; bool is_array = false; bool not_use_right_delete = false; }; bool operator==(const Record& lhs, const Record& rhs) { return lhs.ptr == rhs.ptr; }std::vector<Record> myAllocStatistic; void* newFunctionImpl(std::size_t sz, char const* file, int line, bool is) { void* ptr = std::malloc(sz); myAllocStatistic.push_back({ ptr,sz, file, line , is }); return ptr; }void* operator new(std::size_t sz, char const* file, int line) { return newFunctionImpl(sz, file, line, false); }void* operator new [](std::size_t sz, char const* file, int line)
{return newFunctionImpl(sz, file, line, true);
}void operator delete(void* ptr) noexcept { Record item{ ptr, 0, "", 0, false }; auto itr = std::find(myAllocStatistic.begin(), myAllocStatistic.end(), item); if (itr != myAllocStatistic.end()) { auto ind = std::distance(myAllocStatistic.begin(), itr); myAllocStatistic[ind].ptr = nullptr; if (itr->is_array) { myAllocStatistic[ind].not_use_right_delete = true; } else { myAllocStatistic[ind].count = 0; }std::free(ptr); } }void operator delete[](void* ptr) noexcept { Record item{ ptr, 0, "", 0, true }; auto itr = std::find(myAllocStatistic.begin(), myAllocStatistic.end(), item); if (itr != myAllocStatistic.end()) { auto ind = std::distance(myAllocStatistic.begin(), itr); myAllocStatistic[ind].ptr = nullptr; if (!itr->is_array) { myAllocStatistic[ind].not_use_right_delete = true; } else { myAllocStatistic[ind].count = 0; }std::free(ptr); } }
#define new new(__FILE__, __LINE__)
struct MyStruct { void ReportMemoryLeak() { std::cout << "Memory leak report: " << std::endl; bool leak = false; for (auto& i : myAllocStatistic) { if (i.count != 0) { leak = true; std::cout << "leak count " << i.count << " Byte" << ", file " << i.location << ", line " << i.line; if (i.not_use_right_delete) { cout << ", not use right delete. "; }	cout << std::endl; } }if (!leak) { cout << "No memory leak." << endl; } }~MyStruct() { ReportMemoryLeak(); } }; static MyStruct my; void check_do(bool b, int line = __LINE__) { if (b) { cout << "line:" << line << " Pass" << endl; } else { cout << "line:" << line << " Ohh! not passed!!!!!!!!!!!!!!!!!!!!!!!!!!!" << " " << endl; exit(0); } }
#define check(msg)  check_do(msg, __LINE__);
//------上面的代码是用来测试你的代码有没有问题的辅助代码,你无需关注------class Queue
{
public:inline const int& first(void) const;inline bool empty(void) const;inline size_t size(void) const;void enqueue(const int& _item);void dequeue(void);void clear(void);
private://使用双链表实现队列std::list<int> m_queue;
};inline const int& Queue::first(void) const
{int a = 0;return a;
}bool Queue::empty(void) const
{return false;
}void Queue::clear(void)
{
}size_t Queue::size(void) const
{return -1;
}void Queue::enqueue(const int& _item)
{
}void Queue::dequeue(void)
{
}int main(int argc, char** argv)
{//test clear{Queue s;check(s.size() == 0);check(s.empty());s.enqueue(1);check(s.size() == 1);check(s.empty() == false);s.clear();check(s.size() == 0);check(s.empty());}//test first{Queue q;check(q.size() == 0);q.enqueue(1);check(q.size() == 1);auto q2 = q;check(q2.size() == 1);q = q2;q.enqueue(2);auto first = q2.first();check(first == 1);check(q.size() == 2);check(q.first() == 1);q.clear();check(q.size() == 0 && q.empty());}//test enqueue dequeue{Queue q;for (size_t i = 0; i < 10; i++){q.enqueue(i);}int i = 0;while (!q.empty()){check(q.first() == i++)q.dequeue();}check(q.size() == 0 && q.empty());}
}

预期输出如下

line:71 Pass
line:72 Pass
line:74 Pass
line:75 Pass
line:77 Pass
line:78 Pass
line:83 Pass
line:85 Pass
line:87 Pass
line:91 Pass
line:92 Pass
line:93 Pass
line:95 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:107 Pass
line:110 Pass
Memory leak report:
No memory leak.
http://www.yayakq.cn/news/298013/

相关文章:

  • 喜迎二十大演讲稿seo优化流程
  • APP编辑WordPress引擎优化是什么意思
  • 广东建设注册中心网站闲鱼钓鱼网站怎么制作
  • 响应式网站写法房产销售网站设计
  • 虾米音乐歌曲链接做qq音乐网站上传自己做的网站
  • 网站建设评判标准seo是什么意思seo是什么职位
  • 几分钟弄清楚php做网站自己做的网站如何赚钱吗
  • 做任务给钱的网站建立网站的链接结构有哪几种形式?简述其各自的优缺点
  • 网站开发要什么流程网站开发一键上架淘宝
  • 长安企业建站优秀中文企业网站欣赏
  • 上海做网站公司排名初级网页设计师
  • wordpress网站顶部seo优化主要工作内容
  • 织梦配置手机网站做废旧金属的网站
  • 扁平化 手机网站首页自己做的网站怎么调用百度地图
  • 高端大气上档次网站电商建网站
  • 广州市网站建设科技公司河北建设协会官方网站
  • 手机访问不了自己做的网站吗成都双流网站建设
  • 网站建站助手单位网站建设总结
  • 免费下软件的网站哪里有做配音的兼职网站
  • 如何做公司网站建设东莞智通人才网招聘
  • 网站开发的需求分析论文如何塑造和推广网络品牌
  • 建站合肥网络公司seo中山手机网站建设哪家好
  • 网站服务器排行榜电商网站建设开发维护
  • 淘宝优惠券网站用什么软件做关于app的策划书
  • 保险网站建设的目标甘肃公司网站建设哪家好
  • 线上营销手段东莞seo优化团队
  • 临淄网站推广开发网站性能监控
  • 做网站带吗WordPress开启评论验证
  • 容桂均安网站建设wordpress去掉tag标签
  • 网站制作设计收费标准云软件网站建设