博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用一个固定的数组实现栈和队列
阅读量:6264 次
发布时间:2019-06-22

本文共 2634 字,大约阅读时间需要 8 分钟。

题目描述:  

  Problem 1:

    用数组结构实现大小固定的栈

解题思路:

  给定一个指针即可实现。

 

代码实现:  

1 class ArrayToStack 2 { 3 public: 4     ArrayToStack(int size = 3) 5     { 6         this->size = size; 7     } 8  9     void Push(const int a)10     {11         if (ptr < size)12             arr[ptr++] = a;13         else14             cout << "error:the stack is full!" << endl;15     }16 17     int Top()18     {19         if (ptr > 0)20             return arr[ptr-1];21         else22             cout << "error:the stack is empty!" << endl;23         return -1;24     }25 26     void Pop()27     {28         if (ptr > 0)29             ptr--;30         else 31             cout << "error:the stack is empty!" << endl;32     }33 34 private:35     int size;36     int *arr = new int[size];37     int ptr = 0;38 };

 

Problem2:

  使用数组实现队列和

解题思路:
  使用两个指针分别指向队列的前和尾:

 

代码实现:  

1 class ArrayToQueue 2 { 3 public: 4     ArrayToQueue(int size = 3) :N(size) {} 5  6     void Push(int a) 7     { 8         if (size < N) 9         {10             if (ptr1 >= N)11                 ptr1 = 0;12             arr[ptr1++] = a;13             size++;14         }15         else16             cout << "error: the queue is full!" << endl;17     }18 19     int Top()20     {21         if (size > 0)22             return arr[ptr0];23         else24             cout << "error: the queue is empty!" << endl;25         return -1;26     }27 28     void Pop()29     {30         if (size > 0)31         {32             if (ptr0 >= N)33                 ptr0 = 0;34             ptr0++;35             size--;36         }37         else38             cout << "error: the queue is empty!" << endl;39     }40 41 private:42     int N;43     int ptr0 = 0, ptr1 = 0, size = 0;44     int *arr = new int [N];45 46 };

测试代码:

  

1 void Test() 2 { 3     ArrayToStack s(5); 4     s.Pop(); 5     cout << s.Top() << endl; 6     cout << "****************" << endl; 7     s.Push(1); 8     s.Push(2); 9     s.Push(3);10     s.Push(4);11     s.Push(5);12     s.Push(6);13     cout << "****************" << endl;14     cout << s.Top() << endl;15     s.Pop();16     cout << s.Top() << endl;17 18 19     cout << "==========================" << endl;20     cout << "==========================" << endl;21     cout << "==========================" << endl;22     ArrayToQueue q(5);23     cout << q.Top() << endl;24     q.Pop();25 26     q.Push(1);27     q.Push(2);28     q.Push(3);29     q.Push(4);30     q.Push(5);31     q.Push(6);32 33     cout << q.Top() << endl;34     q.Pop();35     cout << q.Top() << endl;36 37     q.Push(6);38     cout << q.Top() << endl;39 40 }

 

转载于:https://www.cnblogs.com/zzw1024/p/10988033.html

你可能感兴趣的文章
(转)Eclipse中junit框架的使用——单元测试
查看>>
lock关键字理解
查看>>
20172303 2018-2019-1 《程序设计与数据结构》第3周学习总结
查看>>
[Javascript]史上最短的IE浏览器判断代码
查看>>
关于《大道至简》第五章的收获
查看>>
网卡驱动
查看>>
kinect sdk开发入门WPFdemo笔记
查看>>
Server.Transfer详细解释
查看>>
java单链表的增、删、查操作
查看>>
The working copy at 'xxx' is too old 错误解决
查看>>
jadclipse
查看>>
// 1.什么是JOSN?
查看>>
SQL语句详细汇总
查看>>
如何保护.net中的dll文件(防破解、反编译)
查看>>
Python 装饰器
查看>>
Docker 网络模式
查看>>
[POI2013]Usuwanka
查看>>
problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 算法分析...
查看>>
nodejs + CompoundJS 资源
查看>>
转:C#并口热敏小票打印机打印位图
查看>>