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

网站百度收录秒收方法百度一下就知道官方网站

网站百度收录秒收方法,百度一下就知道官方网站,深圳论坛网站设计哪家公司好,广西南宁市网站建设服务中心分享一首歌曲吧,希望在枯燥的刷题生活中带给你希望和勇气,加油! 题目: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty&#…

分享一首歌曲吧,希望在枯燥的刷题生活中带给你希望和勇气,加油!

  

题目:

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop 和 empty)。

实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

题解: 

首先自己实现一个队列粘贴复制过去:

注意:这道题目队列的实现方法不同不会影响题目,只要是个队列,先进先出,那么不管你是双向还是结构不同,都不会影响题目的实现。

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>typedef int DataType;
typedef struct Queue
{DataType data;struct Queue *next;
}Queue;typedef struct Q
{Queue* head;Queue* tail;int size;
}Q;void Init(Q *qq);
void Destroy(Q* qq);
void QueuePush(Q* qq, DataType x);
void QueuePop(Q* qq);
DataType GetQueueFrontNum(Q* qq);
DataType GetQueueBackNum(Q* qq);
bool Empty(Q* qq);
int Size(Q* qq);void Init(Q* qq)
{assert(qq);qq->head = NULL;qq->tail = NULL;qq->size = 0;
}void QueuePush(Q* qq, DataType x)
{assert(qq);Queue* temp = (Queue*)malloc(sizeof(Queue));if (temp == NULL){perror("malloc fail");exit(-1);}temp->data = x;temp->next = NULL;if (qq->tail == NULL)qq->head = qq->tail = temp;else{qq->tail->next = temp;qq->tail = temp;}qq->size++;
}void QueuePop(Q* qq)
{assert(qq);assert(!Empty(qq));if (qq->head == qq->tail){free(qq->head);qq->head = qq->tail = NULL;}else{Queue* next = qq->head->next;free(qq->head);qq->head = next;}qq->size--;
}DataType GetQueueFrontNum(Q* qq)
{assert(qq);assert(!Empty(qq));return qq->head->data;
}DataType GetQueueBackNum(Q* qq)
{assert(qq);assert(!Empty(qq));return qq->tail->data;
}bool Empty(Q* qq)
{assert(qq);return qq->size == 0;
}void Destroy(Q* qq)
{assert(qq);Queue *cur = qq->head;while(cur){Queue *next = cur->next;free(cur);cur = next;}qq->head = qq->tail = NULL;qq->size = 0;
}int Size(Q* qq)
{assert(qq);return qq->size;
}

剩下的就是题目接口:

typedef struct {Q q1;Q q2;
} MyStack;
MyStack* myStackCreate() 
{MyStack *st = (MyStack*)malloc(sizeof(MyStack));Init(&st->q1);Init(&st->q2);return st;
}
void myStackPush(MyStack* obj, int x) 
{if(!Empty(&obj->q1)){QueuePush(&obj->q1,x);}else{QueuePush(&obj->q2,x);}
}
int myStackPop(MyStack* obj) 
{Q *empty = &obj->q1;Q *obempty = &obj->q2;if(!Empty(&obj->q1)){empty = &obj->q2;obempty = &obj->q1;}int sz = Size(obempty) - 1;for(int i=0; i<sz; i++){QueuePush(empty,GetQueueFrontNum(obempty));QueuePop(obempty);}int num = GetQueueFrontNum(obempty);QueuePop(obempty);return num;
}
int myStackTop(MyStack* obj) 
{if(!Empty(&obj->q1)){return GetQueueBackNum(&obj->q1);}else{return GetQueueBackNum(&obj->q2);}   
}
bool myStackEmpty(MyStack* obj) 
{return (&obj->q1)->size == 0 && (&obj->q2)->size == 0;
}
void myStackFree(MyStack* obj) 
{Destroy(&obj->q1);Destroy(&obj->q2);free(obj);
}

http://www.yayakq.cn/news/313880/

相关文章:

  • 域名只做邮箱没网站要备案吗导航类网站模板
  • html代码做的网站开封做网站推广
  • 有没有免费的网站推销产品网赌网站怎么建设
  • tk网站域名注册建设工程项目管理中心
  • 用手机可以建设一个手机网站吗网站浮动代码
  • 中国做室内设计的网站网站的空间
  • 网站建设a云世家网络没有网站服务器空间如何用ftp
  • 织梦网站根目录汕头网站网站建设
  • 中国建设网官方网站app北京免费网站建设模板
  • 包头网站建设价格南宁手机建站公司
  • 建设银行客户投诉网站网络营销案例分析ppt
  • 泉州商城网站开发设计互联网企业概念
  • 个人做网站有什么条件成都小程序开发名录
  • 建设工程报建网站查询网站优化公司服务
  • 邀请专家集体会诊网站建设怎么建立网站的流程
  • 培训网站导航电商营销推广方法
  • 网站推广优化教程山东泰安天气预报15天
  • 安徽 建设 招聘信息网站网站没收录了怎么办
  • 海原网站建设微信公众号做的网站
  • 甘肃做网站优化手机性能的软件
  • 购物网站开发总结报告龙岗公司做网站
  • 大连筑成建设集团有限公司网站如何在局域网内做网站
  • 重庆中小企业建站价格如果制作一个自己的网站
  • 行知网站建设女生大专学什么专业好
  • 聊城网站那家做的好山西建站公司
  • 湖南网站建设加盟代理做零食用哪个网站好
  • 黄山网站建设jidela个人网页设计思维导图
  • 网站大全app下载图片制作在线网页
  • 网站图片速度用来做视频连接的网站
  • 用html5做的简单的网站烟台城乡建设住建局网站