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

建网站和建网店的区别wordpress 关注

建网站和建网店的区别,wordpress 关注,网站建设中哪些最重要性,wordpress去掉侧边栏文章目录前言使用两个队列实现栈1.队列接口函数引入2.栈的初始化3.向栈中插入元素4.出栈操作5.取出栈顶元素6.判断栈是否为空7.释放内存空间总结前言 本文章主要介绍栈和队列的相互转换。 使用两个队列实现栈 我们知道#xff0c;栈的特点是后进先出#xff0c;而队列的特点… 文章目录前言使用两个队列实现栈1.队列接口函数引入2.栈的初始化3.向栈中插入元素4.出栈操作5.取出栈顶元素6.判断栈是否为空7.释放内存空间总结前言 本文章主要介绍栈和队列的相互转换。 使用两个队列实现栈 我们知道栈的特点是后进先出而队列的特点是先进先出。 栈的特点 队列的特点 使用两个队列实现栈的思路是 1.向两个队列中的任一队列放入元素 2.取出元素时队列的功能是先进先出要达到后进先出需要将前面的所有元素取出存入另一个空队列中然后将剩下的最后一个元素释放掉即可。 比如 后面如果想继续插入元素的话应该将插入的元素放在非空队列中这样就实现了栈的功能。 这样实现的原因是两个队列中必有其中一个队列是空队列保证了栈的后进先出的特点。 下面给出一道题目 两个队列实现栈 这里我用c语言来实现所以先先写好队列的基本功能再将接口函数引入。 1.队列接口函数引入 typedef int QDataType; typedef struct QueueNode {QDataType data;struct QueueNode* next; }QNode;typedef struct Queue {QNode* head;QNode* tail;int size; }Queue;void QueueInit(Queue* pq); void QueueDestroy(Queue* pq); void QueuePush(Queue* pq, QDataType x); void QueuePop(Queue* pq); QDataType QueueFront(Queue* pq); QDataType QueueBack(Queue* pq); bool QueueEmpty(Queue* pq); int QueueSize(Queue* pq); void QueueInit(Queue* pq) {assert(pq);pq-head NULL;pq-tail NULL;pq-size 0; }void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);//del NULL;}pq-head pq-tail NULL;pq-size 0; }void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-data x;newnode-next NULL;if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size; }void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* del pq-head;pq-head pq-head-next;free(del);}pq-size--; }QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; }QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; }bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL pq-tail NULL; }// 1G 1024MB // 1024MB 1024*1024KB // 1024*1024KB 1024*1024*1024Byteint QueueSize(Queue* pq) {assert(pq);/*int size 0;QNode* cur pq-head;while (cur){cur cur-next;size;}return size;*/return pq-size; } 2.栈的初始化 MyStack* myStackCreate() {MyStack*st (MyStack*)malloc(sizeof(MyStack));QueueInit(st-q1);QueueInit(st-q2);return st; }栈的初始化就是将两个队列进行初始化。 3.向栈中插入元素 保证其中一个队列不为空 //首先需要判断哪个队列为空可以用ifelse来判断但是这样操作冗余的所以可以使用假设 int myStackPop(MyStack* void myStackPush(MyStack* obj, int x) {if(!QueueEmpty(obj-q1)){QueuePush(obj-q1,x);}else{QueuePush(obj-q2,x);} }由于无法得知哪一个队列为空则需要判断或者假设使用判断的化代码比较冗余在这里我使用假设假设第一个队列是空。 4.出栈操作 int myStackPop(MyStack* obj) {Queue*EmptyQ obj-q1;Queue*NonEmptyQ obj-q2;if(!QueueEmpty(obj-q1)){//如果q1不为空返回假就返回真进入if//意思就是我们假设错误了。EmptyQ obj-q2;NonEmptyQ obj-q1;}//来到这里已经知道哪个是空了,把所有元素导入非空队列将最后一个不导while(QueueSize(NonEmptyQ)1){QueuePush(EmptyQ,QueueFront(NonEmptyQ));QueuePop(NonEmptyQ);}int top QueueFront(NonEmptyQ);QueuePop(NonEmptyQ);return top;}5.取出栈顶元素 int myStackTop(MyStack* obj) {//取出栈顶元素//在首先的队列中我们虽然不能删除队尾元素但是我们可以取出队尾的元素if(!QueueEmpty(obj-q1)){return QueueBack(obj-q1);}else{return QueueBack(obj-q2);} }6.判断栈是否为空 bool myStackEmpty(MyStack* obj) { //判断栈是否为空需要判断两个队列是否为空return QueueEmpty(obj-q1) QueueEmpty(obj-q2); }判断栈是否为空需要判断两个队列是否为空 7.释放内存空间 void myStackFree(MyStack* obj) {QueueDestroy(obj-q1);QueueDestroy(obj-q2);free(obj); }注意由于两个队列的维护是依靠指针所以两个队列申请的空间先释放再释放栈结构体空间 总结 本文章介绍了两个队列实现栈的方法。 使用队列实现栈和使用栈实现队列都是可以的 下篇文章介绍使用两个栈实现队列
http://www.dnsts.com.cn/news/127583.html

相关文章:

  • 查询网站服务器凯里有哪些网站开发公司
  • wordpress 前端传文件网站优化网络公司
  • 惠州网站建设学校2015做导航网站有哪些功能
  • 网站营销特点靖江网站建设价格
  • 网站开发用什么框架重庆科技建设
  • 酷播wordpress关键词seo公司
  • 建站工具模板谷歌seo网站优化
  • 做网站公司的使命搜索技巧
  • 沙田做网站游戏平台代理
  • 衡水移动网站建设服装网站建设项目实施报告范文
  • 网站开发公司建网站网络营销策划营销型网站建设
  • 自己建网站怎样建免费邮箱163登录入口
  • 开封专业做网站公司长沙网红美食打卡地
  • 网站建设需要的网络技术网站综合营销方案设计
  • 网站建设服务ysaigo163域名注册
  • 网站制作属于什么专业刚做网站做什么网站好点
  • 泵阀网站建设软件设计是干什么的
  • 南昌网站做wordpress sso
  • 建网站_网站内容怎么做烟台专业网站建设公司哪家好
  • 做家居商城网站网络整合推广营销
  • 个人网站的制作代码乡镇府建设网站
  • 中国联通网站建设与维护公司名字大全必过
  • 黄龙云 加强网站建设国内做网上旅游业务的网站
  • 青岛做外贸网站的公司会计网站建设
  • 哈尔滨建设网站成本wordpress编辑图片不显示
  • 企业网站建设主要考虑哪些网上定做衣服
  • 福建建设局网站招标html5的网站设计与实现是做什么
  • 国内网站都要备案吗扬州建设会计学会网站
  • 廊坊网站建设公司哪家好做关于植物的网站
  • react网站开发实战用软件做的网站权限管理