请选择 进入手机版 | 继续访问电脑版
查看: 395|回复: 0

[软件工程] 两个栈实现队列

688

主题

688

帖子

2083

积分

猿er

Rank: 1

积分
2083
发表于 2016-8-14 17:54:14
俺是初学者,自己写的,各位大神帮忙看看我这段代码有什么可以改进的,我觉得吧,初始化top值得地方可以改进,但我不知道如何做;
  1. #include<iostream>
  2. using namespace std;
  3. struct stack1
  4. {
  5. int a[100];
  6. int top;
  7. };
  8. bool stack_empty(stack1 s)
  9. {
  10. if(s.top==-1)
  11. return true;
  12. else
  13. return false;
  14. }
  15. void push(stack1 &s,int x)
  16. {
  17. s.top++;
  18. s.a[s.top]=x;
  19. }
  20. int pop(stack1 &s)
  21. {
  22. if(stack_empty(s))
  23. return false;
  24. else
  25. {
  26. s.top--;
  27. return s.a[s.top+1];
  28. }
  29. }
  30. struct queue
  31. {
  32. stack1 s1,s2;
  33. };
  34. void enqueue(queue &q,int x)
  35. {
  36. push(q.s1,x);
  37. }
  38. int dequeue(queue &q)
  39. {
  40. if(stack_empty(q.s2))
  41. {
  42. while(!stack_empty(q.s1))
  43. push(q.s2,pop(q.s1));
  44. }
  45. return pop(q.s2);
  46. }
  47. void show(queue q)
  48. {
  49. int i;
  50. if(!stack_empty(q.s2))
  51. {
  52. for(i=q.s2.top;i>=0;i--)
  53. cout<<q.s2.a[i];
  54. }
  55. if(!stack_empty(q.s1))
  56. {
  57. for(i=0;i<=q.s1.top;i++)
  58. cout<<q.s1.a[i];
  59. }
  60. }
  61. int main()
  62. {
  63. queue q1;
  64. q1.s1.top=-1;
  65. q1.s2.top=-1;
  66. enqueue(q1,1);
  67. enqueue(q1,2);
  68. enqueue(q1,3);
  69. dequeue(q1);
  70. enqueue(q1,1);
  71. enqueue(q1,2);
  72. enqueue(q1,3);
  73. enqueue(q1,4);
  74. enqueue(q1,5);
  75. dequeue(q1);
  76. enqueue(q1,1);
  77. show(q1);
  78. }
复制代码


回复

使用道具 举报