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

服装网站设计公司收录网站有哪些

服装网站设计公司,收录网站有哪些,微擎做网站费用,深圳公司注册资金实缴要求LeetCode链接:225. 用队列实现栈 - 力扣(LeetCode) 本文默认读者已经掌握栈与队列的基本知识 或者先看我的另一篇博客:【数据结构】栈与队列_字节连结的博客-CSDN博客 做题思路 由于我们使用的是C语言,不能直接使用队…

LeetCode链接:225. 用队列实现栈 - 力扣(LeetCode)


本文默认读者已经掌握栈与队列的基本知识

或者先看我的另一篇博客:【数据结构】栈与队列_字节连结的博客-CSDN博客

做题思路

由于我们使用的是C语言,不能直接使用队列的操作,

所以做这道题得先把我们之前实现的队列复制过来:

//C语言模拟实现队列//链式结构:表示队列
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;//队列1Que q2;//队列2
} MyStack;//开辟空间并初始化
MyStack* myStackCreate()
{MyStack* pst = (MyStack*)malloc(sizeof(MyStack));QueueInit(&pst->q1);QueueInit(&pst->q2);return pst;
}//将元素x压入栈顶
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;}//前size-1个导入空队列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);}
}//如果栈是空的,返回true;否则,返回false
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.mmbaike.com/news/102402.html

相关文章:

  • 营业范围中网站开发与网页设计最新热搜新闻事件
  • 深圳高端婚介公司河源市企业网站seo价格
  • dhru商城网站建设最有效的线上推广方式
  • 哈尔滨建设网站哪家靠谱网络运营团队
  • h5商城网站建站新闻投稿平台
  • 网站建设金简单制作html静态网页
  • 广告创意设计文案甘肃seo网站
  • html网站建设中成都seo培训班
  • 沈阳世纪兴网站制作公司搭建一个网站的流程
  • 网站建设做的好的公司百度指数官方版
  • 做的网站图片显示一半如何创建自己的小程序
  • 对软件工程专业的认识什么是搜索引擎优化?
  • 教育网站建设旅游seo整站优化
  • 企业网站建设实验报告建一个外贸独立站大约多少钱
  • 视频弹幕网站建设百度框架户一级代理商
  • 免费的建筑设计网站ip软件点击百度竞价推广
  • 沈阳网站开发简维沈阳网站制作推广
  • 做网站话术免费网络推广网址
  • php网站授权seo短期课程
  • 学做缝纫的网站公司网络推广方案
  • 网站需要的栏目和内容百度联盟广告收益
  • 网页设计的网站推荐汕头seo
  • wordpress网站系统网盘资源大全
  • 长沙关键词排名软件黑帽seo是什么
  • 个人网站 备案 备注外链是什么
  • 手机网站制作移动高端网站建设安卓优化大师2021
  • 怎么做交易网站网络推广软文
  • 呼和浩特免费制作网站南京百度网站快速优化
  • 北京网站建设公司房山华网厦门seo小谢
  • 网站开发进度设计与阶段目标谷歌官网注册入口