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

网站设计特色酒泉百度做网站多少钱

网站设计特色,酒泉百度做网站多少钱,电子商务网站开发的基本要求,国际网站建设工具目录 1. 用队列实现栈 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 用栈实现队列 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 用队列实现栈 1.1 题目链接及描述 1. 题目链接 #xff1a; 225. 用队列实现栈 - 力扣#xff08;LeetCode#xff09; 2. 题目描…目录 1. 用队列实现栈 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 用栈实现队列 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 用队列实现栈 1.1 题目链接及描述 1. 题目链接  225. 用队列实现栈 - 力扣LeetCode 2. 题目描述 请你仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop 和 empty。 实现 MyStack 类 void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的返回 true 否则返回 false 。 1.2 解题思路 队列的特点是先进先出栈的特点是后进先出。 1分析出栈操作的实现 令第一个队列入队4个元素1、2、3、4 此时出栈要求出4而当前队列只能出1。 思路依次从第一个队列出队1、2、3元素并依次入队第二个队列 出队直至第一个队列只剩一个元素该元素就是出栈要求的元素 2分析入栈操作的实现 基于1现假设需入栈5、6考虑下一个需出栈的情况若为栈则需出6为了实现该效果将5、6入第二个队列再类似1步骤将2~5元素依次入队第一个队列再出队第二队列的6以实现目标效果 总结保持一个存数据一个为空 入数据则入非空队列出数据则将前面若干个数据入队至另一空队列 1.3 程序 由于C语言并未提供实现有队列的库故队列需自行实现。 相关代码见下文 【数据结构】_队列的结构与实现-CSDN博客文章浏览阅读495次点赞8次收藏4次。队列只允许在一端进行数据的插入操作在另一端进行数据的删除操作的特殊线性表队列具有先进先出FIFOFirst In First Out的特点。2若队列仅剩一个元素按当前无特殊情况处理的方法实现则pq-ptail未置空使得其成为野指针故需对其进行单独处理。注若采取设有头结点的单链表可传一级指针但仍然需传队尾结点指针仍需要传递两个参数总体而言依然较为麻烦。若将数组头视为队头数组尾视为队尾则插入对应尾插实现方便但删除对应头删实现麻烦出队列进行删除操作的一端称为队头https://blog.csdn.net/m0_63299495/article/details/145443895https://blog.csdn.net/m0_63299495/article/details/145443895完整解答程序如下 typedef int QDataType; typedef struct QueueNode {QDataType val;struct QueueNode* next; }QNode; typedef struct Queue {QNode* phead;QNode* ptail;int size; }Queue; // 初始化 void QueueInit(Queue* pq); // 销毁 void QueueDestory(Queue* pq); // 队尾插入 void QueuePush(Queue* pq, QDataType x); // 队头删除 void QueuePop(Queue* pq); // 计算列表元素个数 int QueueSize(Queue* pq); // 取队头/队尾数据 QDataType QueueFront(Queue* pq); QDataType QueueBack(Queue* pq); // 判空 bool QueueEmpty(Queue* pq);// 初始化 void QueueInit(Queue* pq) {assert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0; } // 队尾插入 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newNode (QNode*)malloc(sizeof(QNode));if (newNode NULL) {perror(malloc fail);return;}newNode-val x;newNode-next NULL;// 情况1队列为空if (pq-ptail NULL) {pq-phead pq-ptail newNode;}// 情况2队列不为空队尾插入else {pq-ptail-next newNode;pq-ptail newNode;}pq-size; } // 队头删除 void QueuePop(Queue* pq) {assert(pq);assert(QueueSize(pq)!0);// 情况1队列仅一个结点if (pq-phead-next NULL) {free(pq-phead);pq-phead pq-ptail NULL;}// 情况2队列有多个结点else {QNode* pheadNext pq-phead-next;free(pq-phead);pq-phead NULL;pq-phead pheadNext;}pq-size--; } // 计算列表元素个数 int QueueSize(Queue* pq) {return pq-size; } // 取队头/队尾数据 QDataType QueueFront(Queue* pq) {assert(pq);assert(pq-phead);return pq-phead-val; } QDataType QueueBack(Queue* pq) {assert(pq);assert(pq-phead);return pq-ptail-val; } // 判空 bool QueueEmpty(Queue* pq) {assert(pq);return pq-size 0; } // 销毁 void QueueDestory(Queue* pq) {assert(pq);QNode* cur pq-phead;while (cur) {QNode* curNext cur-next;free(cur);cur NULL;cur curNext;}pq-phead pq-ptail NULL; }typedef struct {Queue q1;Queue q2; } MyStack;MyStack* myStackCreate() {MyStack* pst(MyStack*)malloc(sizeof(MyStack));if(pst NULL){perror(malloc fail);return NULL;}QueueInit((pst-q1));QueueInit((pst-q2));return pst; }void myStackPush(MyStack* obj, int x) {assert(obj);// 入队不为空的队列if(!QueueEmpty((obj-q1))){QueuePush((obj-q1),x);}else{QueuePush((obj-q2),x);} }int myStackPop(MyStack* obj) {assert(obj);// 假设法确定空队列与非空队列Queue* empty(obj-q1);Queue* nonEmpty(obj-q2);if(!QueueEmpty((obj-q1))){empty(obj-q2);nonEmpty(obj-q1);}// 将非空队列前size-1个数据至另一队列while(QueueSize(nonEmpty)1){QueuePush(empty,QueueFront(nonEmpty));QueuePop(nonEmpty);}// 返回栈顶元素int topQueueFront(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) {QueueDestory((obj-q1));QueueDestory((obj-q2));free(obj); } 注关于本题中各结构体及指针的指向关系 同时也由于结构体指针又作为另一结构体的成员变量进行free时需要全部释放防止因为需要释放空间的遗漏导致内存泄漏 2. 用栈实现队列 2.1 题目链接及描述 题目链接232. 用栈实现队列 - 力扣LeetCode 题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作push、pop、peek、empty 实现 MyQueue 类 void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空返回 true否则返回 false 2.2 解题思路 栈的特点是后进先出队列的特点是先进先出。 1分析出队列操作 令第一个栈入栈1、2、3、4四个元素此时队列要求出队1但当前栈只能出栈4 思路依次从第一个栈出栈4、3、2并令其入栈第二个栈再出栈第一个栈的元素1即可 2分析入队列操作 令要实现的队列入队列5、6将其入栈到第一个栈而后将第一个栈视为push栈仅用于入数据将第二个栈视为pop栈仅用于出数据。当pop栈为空但还要进行pop操作时将push栈的元素依次出栈并入栈pop栈 2.3 程序 由于C语言并未提供实现有栈的库故栈需自行实现。 相关代码见下文 【数据结构】_栈的结构与实现-CSDN博客文章浏览阅读296次点赞3次收藏7次。若top表示栈顶元素的下标则初始化时(栈内无元素)top-1插入时在a[top]处入栈元素若top表示栈顶元素的下一个元素的下标则初始化时top为0插入时在a[top]处入栈元素。1、若采用数组实现栈则可将数组头视为栈底数组尾视为栈顶出入栈都在数组尾进行操作。3、若采用双链表实现栈则无论将哪端视为栈底出栈、入栈等方法的实现都非常方便1、栈一种特殊的线性表只允许在固定的一端插入和删除数据2、压栈栈的插入操作叫做进栈、压栈、入栈。3、出栈栈的删除操作叫做出栈。https://blog.csdn.net/m0_63299495/article/details/145428244https://blog.csdn.net/m0_63299495/article/details/145428244完整程序如下 typedef int STDataType; typedef struct Stack {// 动态开辟数组STDataType* a;// top表示栈顶元素的下一个元素的下标int top;int capacity; }ST; void STInit(ST* pst); void STDestory(ST* pst); // 压栈 void STPush(ST* pst,STDataType x); // 出栈 void STPop(ST* pst); // 获取栈顶数据 STDataType STTop(ST* pst); // 判空 bool STEmpty(ST* pst); // 获取栈元素个数 int STSize(ST* pst);typedef struct {ST pushst;ST popst; }MyQueue;MyQueue* myQueueCreate(); void myQueuePush(MyQueue* obj, int x); int myQueuePop(MyQueue* obj); int myQueuePeek(MyQueue* obj); bool myQueueEmpty(MyQueue* obj); void myQueueFree(MyQueue* obj);// 初始化 void STInit(ST* pst) {assert(pst);pst-a NULL;// top表示栈顶元素的下一个元素的下标pst-top 0;// capacity表示栈内元素个数等价于栈顶元素的下一个元素的下标pst-capacity 0; } // 销毁 void STDestory(ST* pst) {assert(pst);free(pst-a);pst-a NULL;pst-capacity pst-top 0; } // 压栈 void STPush(ST* pst, STDataType x) {assert(pst);// 满则扩容if (pst-top pst-capacity) {int newCapacity pst-capacity 0? 4 : pst-capacity * 2;STDataType* tmp (STDataType*)realloc(pst-a, newCapacity * (sizeof(STDataType)));if (tmp NULL) {perror(realloc fail);return;}pst-a tmp;pst-capacity newCapacity;}// 入栈数据pst-a[pst-top] x;pst-top; } // 出栈 void STPop(ST* pst) {assert(pst);// 判栈非空assert(pst-top0);pst-top--; } // 获取栈顶数据 STDataType STTop(ST* pst) {assert(pst);assert(pst-top0);return pst-a[pst-top - 1]; } // 判空 bool STEmpty(ST* pst) {if (pst-top 0) {return true;}return false;//return pst-top 0; } // 获取栈元素个数 int STSize(ST* pst) {assert(pst);return pst-top; }MyQueue* myQueueCreate() {MyQueue* obj(MyQueue*)malloc(sizeof(MyQueue));STInit((obj-pushst));STInit((obj-popst));return obj; }void myQueuePush(MyQueue* obj, int x) {assert(obj);STPush((obj-pushst),x); }int myQueuePop(MyQueue* obj) {assert(obj);// 借用myQueuePeek保证popst有数据int frontmyQueuePeek(obj);STPop((obj-popst));return front; }int myQueuePeek(MyQueue* obj) {assert(obj);// pop栈为空倒数据if(STEmpty((obj-popst))){while(!STEmpty((obj-pushst))){STDataType top STTop((obj-pushst));STPop((obj-pushst));STPush((obj-popst),top);}}return STTop((obj-popst)); }bool myQueueEmpty(MyQueue* obj) {assert(obj);return STEmpty((obj-pushst))STEmpty((obj-popst)); }void myQueueFree(MyQueue* obj) {assert(obj);STDestory((obj-popst));STDestory((obj-pushst));free(obj); }
http://www.hkea.cn/news/14355266/

相关文章:

  • 唐山正规做网站的公司哪家好最新网站技术
  • 做响应网站的素材网站有哪些重庆个人建站模板
  • 网站整体设计传媒宣传片制作
  • 重庆网站建设技术支持西安网站开发有哪些公司
  • 衡水移动网站建设价格工信部网站 验证码
  • 外贸类网站模板网站怎么做联系我们页面
  • 福州网站设计培训农安县建设局官方网站
  • 上海建设网站制郑州seo排名优化
  • 福田网站建设罗湖网站建设跟我一起做网站 下载
  • 穿越yin线的做网站网站商城系统建设方案
  • 网站建设渠道代理任务书盐城高端网站制作公司
  • 做网站数据存在哪里网红营销活动
  • 网站制作服务合同域名查询网入口
  • 图形设计网站苏州网页优化软件
  • 内江规划建设教育网站济宁网站建设(
  • 做电影网站如何买版权微信管理系统
  • 网站seo方案策划书wordpress怎么配置七牛云
  • 建设项目公示网站建站公司山东济南兴田德润简介
  • 商务网站开发与建设论文百度获取入口
  • 手机微网站与微官网百度推广代理商返点
  • 苏州新区网站制作建设推建设银行网站怎么取消短信服务
  • 沈阳网站制作公司排名wordpress网站菜单固定
  • 从什么网站可以做兼职网页截图快捷键在哪里
  • 济南英文网站建设优秀毕业设计网站设计
  • 永嘉移动网站建设公司网站页面好了怎么做后端
  • 电子商务网站建设的步骤一般为网站怎样做seo推广
  • 整站seo排名公司2019年的阜南县建设修路网站
  • 北京网站建设的服务推广服务商
  • 做最好的在线中文绅士本子阅读网站水处理网站源码
  • 网站建设程序流程图商务网站建设中存在的问题