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

电子报 网站开发股票软件定制

电子报 网站开发,股票软件定制,本地网站建设的步骤过程,网站开发技术标准Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目#xff1a;仅使用两个队列实现一个后入先出#xff08;LIFO#xff09;的栈#xff0c;并支持普通栈的全部四种操作#xff08;push、top、pop 和 empty#xff09;。 … Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop 和 empty。 实现 MyStack 类 void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的返回 true 否则返回 false 。 注意 你只能使用队列的基本操作 —— 也就是 push to back、peek / pop from front、size 和 is empty 这些操作。 你所使用的语言也许不支持队列。 你可以使用 list 列表或者 deque双端队列来模拟一个队列 , 只要是标准的队列操作即可。 示例 输入 [“MyStack”, “push”, “push”, “top”, “pop”, “empty”] [[], [1], [2], [], [], []] 输出 [null, null, null, 2, 2, false] 解释 MyStack myStack new MyStack(); myStack.push(1); myStack.push(2); myStack.top(); // 返回 2 myStack.pop(); // 返回 2 myStack.empty(); // 返回 False 提示 1 x 9 最多调用100 次 push、pop、top 和 empty 每次调用 pop 和 top 都保证栈不为空 思路思路是先写一个队列的数据结构我们知道栈的结构是先进后出而队列的结构是先进先出所以我们可以用两个队列一个队列的数据导到另外一个队列中然后留最后一个这最后一个就是要出栈的数据出栈就是这样实现而入栈就是直接找到非空的队列入即可 例如两个队列实现入栈如果两个都为空就随便进一个 入栈完成后如果要出栈就将q1的5个数据的前4个导入q2中 再出q1中的数据即可 下面参考代码的实现 创建队列的数据结构以及实现队列的基本操作 typedef int QDataType;typedef struct QueueNode{struct QueueNode* next;QDataType data;}QNode;typedef struct Queue{QNode* phead;QNode* ptail;QDataType size;}Queue;//初始化队列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));assert(newnode);newnode-data x;newnode-next NULL;//队列为空if (pq-ptail NULL){assert(pq-phead NULL);pq-phead pq-ptail newnode;}//队列不为空else{pq-ptail-next newnode;pq-ptail newnode;}pq-size;}//判断队列是否为空bool QIsEmpty(Queue* pq){assert(pq);return pq-phead NULL pq-ptail NULL;}//出队void QueuePop(Queue* pq){assert(pq);assert(!QIsEmpty(pq));//一个节点if (pq-phead-next NULL){free(pq-phead);pq-phead pq-ptail NULL;}//多个节点else{//头删QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--;}//获取队头QDataType QueueFront(Queue* pq){assert(pq);assert(!QIsEmpty(pq));return pq-phead-data;}//获取队尾QDataType QueueBack(Queue* pq){assert(pq);assert(!QIsEmpty(pq));return pq-ptail-data;}//获取队列的长度int Qsize(Queue* pq){assert(pq);return pq-size;}//释放队列void QueueDestroy(Queue* pq){assert(pq);QNode* cur pq-phead;while (cur){QNode* next cur-next;free(cur);cur next;}pq-phead pq-ptail NULL;pq-size 0;}定义两个队列 typedef struct{Queue q1;Queue q2;} MyStack;初始化两个队列 MyStack* myStackCreate(){MyStack* obj (MyStack*)malloc(sizeof(MyStack));QueueInit(obj-q1);QueueInit(obj-q2);return obj;}两个队列实现入栈 void myStackPush(MyStack* obj, int x){//哪个队列不为空就入哪个队列if (!QIsEmpty(obj-q1)){QueuePush(obj-q1, x);}else{QueuePush(obj-q2, x);}}两个队列实现出栈 int myStackPop(MyStack* obj){//假设q1为空q2不空Queue* pEmpty obj-q1;Queue* pNonEmpty obj-q2;//如果假设错误就改正if (!QIsEmpty(obj-q1)){pNonEmpty obj-q1;pEmpty obj-q2;}//导数据将非空队列中的数据导入空的队列中非空队列留最后一个数据即是栈顶的数据while (Qsize(pNonEmpty) 1){QueuePush(pEmpty, QueueFront(pNonEmpty));QueuePop(pNonEmpty);}//记录栈顶的数据然后出栈最后返回这个数据int top QueueFront(pNonEmpty);QueuePop(pNonEmpty);return top;}获取两个队列实现的栈顶数据 int myStackTop(MyStack* obj){//获取栈顶的数据即是获取非空队列的队尾数据//我们上面实现了获取队列的队尾的数据所以直接调用函数即可if (!QIsEmpty(obj-q1)){return QueueBack(obj-q1);}else{return QueueBack(obj-q2);}}判断两个队列是否是空队列即是否是空栈 bool myStackEmpty(MyStack* obj){return QIsEmpty(obj-q1) QIsEmpty(obj-q2);}释放两个队列的内存 void myStackFree(MyStack* obj){QueueDestroy(obj-q1);QueueDestroy(obj-q2);free(obj);}Leetcode -232.用栈实现队列 题目仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作push、pop、peek、empty 实现 MyQueue 类 void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空返回 true 否则返回 false 说明 你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek / pop from top, size, 和 is empty 操作是合法的。 你所使用的语言也许不支持栈。你可以使用 list 或者 deque双端队列来模拟一个栈只要是标准的栈操作即可。 示例 1 输入 [“MyQueue”, “push”, “push”, “peek”, “pop”, “empty”] [[], [1], [2], [], [], []] 输出 [null, null, null, 1, 1, false] 解释 MyQueue myQueue new MyQueue(); myQueue.push(1); // queue is: [1] myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue) myQueue.peek(); // return 1 myQueue.pop(); // return 1, queue is [2] myQueue.empty(); // return false 提示 1 x 9 最多调用 100 次 push、pop、peek 和 empty 假设所有操作都是有效的 例如一个空的队列不会调用 pop 或者 peek 操作 思路思路是先写一个栈的数据结构再定义两个栈一个pushst用来实现入队另一个popst用来实现出队 例如实现入队 将数据入栈到pushst中 需要出队列的时候如果popst为空就将pushst的数据入栈到popst中 此时的1就是队头1234就是入队的顺序 下面参考代码的实现 实现栈的数据结构以及栈的基本操作 typedef int STDataType;typedef struct Stack{STDataType* stack;int top;int capacity;}ST;//初始化void STInit(ST* pst){assert(pst);pst-stack NULL;pst-top 0;pst-capacity 0;}//判断是否为空栈bool STIsEmpty(ST* pst){return pst-top 0;}//进栈void STPushTop(ST* pst, STDataType x){assert(pst);//检查容量if (pst-top pst-capacity){int len pst-capacity 0 ? 4 : pst-capacity * 2;STDataType* newstack (STDataType*)realloc(pst-stack, sizeof(ST) * len);assert(newstack);pst-capacity len;pst-stack newstack;}pst-stack[pst-top] x;pst-top;}//出栈void STPopTop(ST* pst){assert(pst);assert(!STIsEmpty(pst));pst-top--;}//获取栈顶的元素STDataType STTop(ST* pst){assert(pst);assert(!STIsEmpty(pst));return pst-stack[pst-top - 1];}//销毁栈void STDestroy(ST* pst){assert(pst);free(pst-stack);pst-stack NULL;pst-capacity pst-top 0;}定义两个栈一个栈pushst是专门入数据另一个popst是专门出数据 typedef struct{ST pushst;ST popst;} MyQueue;给两个栈初始化 MyQueue* myQueueCreate(){MyQueue* obj (MyQueue*)malloc(sizeof(MyQueue));STInit(obj-pushst);STInit(obj-popst);return obj;}两个栈实现入队列只需要入pushst的栈即可 void myQueuePush(MyQueue* obj, int x){STPushTop(obj-pushst, x);}从队列的开头移除并返回元素与下面两个栈实现返回队列的队头数据相似我们可以直接调用 myQueuePeek 函数返回队头的元素后再移除队头 int myQueuePop(MyQueue* obj){int front myQueuePeek(obj);STPopTop(obj-popst);return front;}两个栈实现返回队列的队头数据 int myQueuePeek(MyQueue* obj){//如果popst栈为空就将pushst的数据导过来if (STIsEmpty(obj-popst)){while (!STIsEmpty(obj-pushst)){STPushTop(obj-popst, STTop(obj-pushst));STPopTop(obj-pushst);}}//返回popst的栈顶元素即是队列的头return STTop(obj-popst);}两个栈实现判断队列是否是空判断两个栈是否为空即可 bool myQueueEmpty(MyQueue* obj){return STIsEmpty(obj-pushst) STIsEmpty(obj-popst);}释放两个栈的内存 void myQueueFree(MyQueue* obj){STDestroy(obj-pushst);STDestroy(obj-popst);free(obj);}
http://www.w-s-a.com/news/136909/

相关文章:

  • 手机购物网站 建站网站建设网站制作网站设计
  • 基于iview的网站开发模板小程序制作需要什么语言
  • 精美网站设计保定建行网站首页登录
  • 网站建设常见问题做网站保存什么格式最好
  • 营销型网站建设与网页设计网站建设 amp 找VX cp5173
  • 新网站该如何做网站优化呢儿童手工
  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南
  • 邓砚谷电子商务网站建设镇江网
  • 网站空间支持什么程序工作服款式
  • 网站单页品牌网站建设 蝌蚪5小
  • 怎么做外贸网站需注意哪些做电脑系统的网站
  • 网站建设介绍推广用语河南网站优化外包服务
  • 课程网站模板贵州省城乡与建设厅网站
  • 网站模板及源码谁家网站用户体验做的好
  • 做网站的技术要求搜索栏在wordpress菜单上位置
  • 如何给网站弄ftpwordpress怎么添加关键词描述
  • 成都工程建设信息网站金科网站建设
  • 传媒公司 网站开发厦门网站建设门户
  • 宿城区建设局网站做网站的绿色背景图
  • 网站空间托管合同 .doc网站开发团队 组建
  • 网站建设书本信息it运维服务
  • 四核网站建设设计网站流程
  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的
  • 选择网站开发公司的标准中国网站建设市场规模
  • 衣服网站建设策划书广州住房和城乡建设部网站
  • 微商城科技淄博网站建设优化seo
  • 杭州 网站设计制作东圃手机网站开发