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

网站开发系统简介seo工具网站

网站开发系统简介,seo工具网站,建网站价格多少,php企业网站整站源码目录 225. 用队列实现栈 题目 ​思路 代码 225. 用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode)https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目 请你仅使用两个队列实现一个后入先出(LIFO&#xff0…

目录

225. 用队列实现栈

题目

​思路

代码


225. 用队列实现栈

225. 用队列实现栈 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/implement-stack-using-queues/description/

题目

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

实现 MyStack 类:

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

示例:

思路

两个队列,一个用来倒数据,一个用来删除数据

入队列时,入不为空的队列。出队列时,不为空队列的前N-1个数据倒入空队列中,剩下的就在队头,方便删除。

图示:

代码

//链式结构:表示队列
typedef int QDataType;
typedef struct QueueNode
{struct QueueNode* next;QDataType data;
}QNode;//队列的结构
typedef struct Queue
{QNode* head;QNode* tail;int size;
}Que;
//初始化队列
void QueueInit(Que* pq);
//销毁队列
void QueueDestroy(Que* pq);
//队尾入队列
void QueuePush(Que* pq, QDataType x);
//队头出队列
void QueuePop(Que* pq);
//获取队列队头元素
QDataType QueueFront(Que* pq);
//获取队列队尾元素
QDataType QueueBack(Que* pq);
//检测队列是否为空,如果为空返回非零结果,如果非空返回0
bool QueueEmpty(Que* pq);
//检测队列中有效元素个数
int QueueSize(Que* pq);void QueueInit(Que* pq)
{assert(pq);pq->head = pq->tail = NULL;pq->size = 0;
}void QueueDestroy(Que* pq)
{assert(pq);QNode* cur = pq->head;while (cur){QNode* next = cur->next;free(cur);cur = next;}pq->head = pq->tail = NULL;pq->size = 0;
}void QueuePush(Que* 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(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));if (pq->head->next == NULL){free(pq->head);pq->head = pq->tail = NULL;}else{QNode* next = pq->head->next;free(pq->head);pq->head = next;}pq->size--;
}QDataType QueueFront(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->head->data;
}QDataType QueueBack(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->data;
}bool QueueEmpty(Que* pq)
{assert(pq);return pq->head == NULL;
}int QueueSize(Que* pq)
{assert(pq);return pq->size;
}typedef struct {Que q1;Que q2;
} MyStack;MyStack* myStackCreate() {MyStack* pst=(MyStack*)malloc(sizeof(MyStack));QueueInit(&pst->q1);QueueInit(&pst->q2);return pst;
}void myStackPush(MyStack* obj, int x) {if(!QueueEmpty(&obj->q1)){QueuePush(&obj->q1,x);}else{QueuePush(&obj->q2,x);}
}int myStackPop(MyStack* obj) {Que* empty=&obj->q1;Que* nonEmpty=&obj->q2;if(!QueueEmpty(&obj->q1)){nonEmpty=&obj->q1;empty=&obj->q2;}while(QueueSize(nonEmpty)>1){QueuePush(empty,QueueFront(nonEmpty));QueuePop(nonEmpty);}int top=QueueFront(nonEmpty);QueuePop(nonEmpty);return top;
}int myStackTop(MyStack* obj) {if(!QueueEmpty(&obj->q1)){return QueueBack(&obj->q1);}else{return QueueBack(&obj->q2);}
}bool myStackEmpty(MyStack* obj) {return QueueEmpty(&obj->q1)&&QueueEmpty(&obj->q2);
}void myStackFree(MyStack* obj) {QueueDestroy(&obj->q1);QueueDestroy(&obj->q2);free(obj);
}

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

相关文章:

  • 保亭交通工程建设局网站建设项目环境影响评价公示网站
  • 卡盟自助网站建设上海免费网站建设服务
  • 汉口专业网站推广公司电影院可以寄存东西吗
  • 刷赞网站推广永久网络营销理论与实务
  • 建站快车用户登录WordPress搭建交互式网站
  • 手机网站建设的优势企业seo网站优化设计
  • php网站投票源码wordpress最新漏洞
  • 医院网站制作公司企业网站 免费
  • 经典网站设计作品装饰公司网站如何布局
  • 网站怎么做IPv6网站建设规章制度
  • 单页销售网站模板wordpress主题haowa导航下载
  • 兴义建设局网站wordpress 段落 两格
  • seo服务器选择jsp网站如何做seo
  • 怎么把网站做成app阿里巴巴网站图片怎么做
  • 凡科免费个人做网站有弊吗国际贸易
  • 云浮哪有公司做网站的宿迁房产网签合同查询
  • 企业1级域名网站怎么做wordpress付费阅读文章功能
  • 程序员接外包网站索引网站有哪些
  • 哈尔滨网络优化公司有哪些佛山网站优化搜索
  • 闵行网站制作哪里有手机如何编辑网页内容
  • 写作网站都有哪些工程信息网排名
  • 潍坊网站制作江门公司如何查域名备案信息查询
  • 中国人做外贸网站都卖什么手续标准化信息网站建设与应用
  • 交互网站建设德州网络公司网站
  • 通信工程企业网站建设站群服务器是什么意思
  • 专门做男士用品的网站杭州市公共资源交易中心
  • 响应式网站建设信息手机app开发网站模板下载
  • 网站栏目管理建设少女映画wordpress
  • 延吉网站制作自己做淘宝客网站吗
  • 江门网站快速排名优化大连开发区规划建设局网站