首页 / 算法 / <算法编程> 两个栈实现一个队列
<算法编程> 两个栈实现一个队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了<算法编程> 两个栈实现一个队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2219字,纯文字阅读大概需要4分钟。
内容图文
![<算法编程> 两个栈实现一个队列](/upload/InfoBanner/zyjiaocheng/755/a857917c73dd41cba06efa9e149b8c66.jpg)
1 #include<iostream> 2 using namespace std; 3 4 typedef struct Node 5 { 6 int num; 7 Node* pNext; 8 }Stack,Queue; 9 10 //栈的入栈相当于 链表的头插 11 Stack* stack_push(Stack** pTop,int num) 12 { 13 Stack* pNode = (Stack*)malloc(sizeof(Stack)); 14 pNode->num = num; 15 pNode->pNext = NULL; 16 17 pNode->pNext = *pTop; 18 *pTop = pNode; 19 20 return *pTop; 21 } 22 23 int stack_pop(Stack** pTop) 24 { 25 if((*pTop) == NULL) return -1; 26 27 Stack* pPop = *pTop; 28 int num = pPop->num; 29 30 *pTop = (*pTop)->pNext; 31 free(pPop); 32 pPop = NULL; 33 34 return num; 35 } 36 37 void PrintStack(Stack* pTop) 38 { 39 cout << "当前栈顶元素为:" << pTop->num << endl; 40 } 41 42 //队列的进栈 43 Queue* queue_push(Stack** pTop1,Stack** pTop2,int num) 44 { 45 //首先判断 栈2中有没有元素 如果有 全部压回栈1中 46 if((*pTop2) != NULL) 47 { 48 while((*pTop2) != NULL) 49 { 50 stack_push(pTop1,stack_pop(pTop2)); 51 } 52 } 53 54 //现有元素已经全部在栈1中 或栈1为空 55 //直接压栈 56 stack_push(pTop1,num); 57 58 return (Queue*)pTop1; 59 } 60 61 int queue_pop(Stack** pTop1,Stack** pTop2) 62 { 63 //判断栈1中有没有元素 如果有 就把栈1中的所有元素都压入栈2后弹出 64 if((*pTop1) != NULL) 65 { 66 while((*pTop1) != NULL) 67 { 68 stack_push(pTop2,stack_pop(pTop1)); 69 } 70 } 71 72 return stack_pop(pTop2); 73 } 74 75 int main() 76 { 77 Stack* pTop1 = NULL; //用来进栈的 78 Stack* pTop2 = NULL; //用来出栈的 79 /*stack_push(&pTop,1); 80 stack_push(&pTop,2); 81 stack_push(&pTop,3); 82 stack_push(&pTop,4); 83 PrintStack(pTop); 84 cout << "弹出栈顶元素:" << stack_pop(&pTop) << endl; 85 cout << "弹出栈顶元素:" << stack_pop(&pTop) << endl; 86 cout << "弹出栈顶元素:" << stack_pop(&pTop) << endl; 87 cout << "弹出栈顶元素:" << stack_pop(&pTop) << endl; 88 cout << "弹出栈顶元素:" << stack_pop(&pTop) << endl;*/ 89 queue_push(&pTop1,&pTop2,1); 90 queue_push(&pTop1,&pTop2,2); 91 queue_push(&pTop1,&pTop2,3); 92 queue_push(&pTop1,&pTop2,4); 93 queue_pop(&pTop1,&pTop2); 94 queue_pop(&pTop1,&pTop2); 95 96 system("pause"); 97 return 0; 98 }
内容总结
以上是互联网集市为您收集整理的<算法编程> 两个栈实现一个队列全部内容,希望文章能够帮你解决<算法编程> 两个栈实现一个队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。