c++用类写栈和队列的简单基本操作(实验)
继续更文。这次用类来写栈和队列,都是用数组模拟的;
以下是栈和队列的定义:
然后分别是栈和队列的类:
完整代码贴上:
栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | //使用类来定义栈 class ZHAN { public : STACK s; //栈的基本操作 void csh(STACK & s); //初始化 bool isempty(STACK & s); //判断是否为空 bool isfull(STACK & s); //判断是否为满 bool push(STACK & s, int val); //入栈 bool pop(STACK & s, int & val); //出栈 int ding(STACK & s); //取栈顶元素 int len(STACK & s); //取栈的长度(有效元素个数) void SHOW(STACK & s); //遍历栈 }; void ZHAN::csh(STACK & s) { s.top=-1; } bool ZHAN::isempty(STACK & s) { if (-1==s.top) return true ; else return false ; } bool ZHAN::isfull(STACK & s) { if (s.top==MAX-1) //下标从零开始 return true ; else return false ; } bool ZHAN::push(STACK & s, int val) { if (isfull(s)) return false ; else { s.data[++s.top]=val; //top指针从-1开始 所以先++才能用 return true ; } } bool ZHAN::pop(STACK & s, int & val) { if (isempty(s)) return true ; else { val=s.data[s.top--]; return true ; } } int ZHAN::ding(STACK & s) { if (isempty(s)) { cout<< "此栈为空栈!!" <<endl; } else { return s.data[s.top]; } } int ZHAN::len(STACK & s) { return s.top+1; } void ZHAN::SHOW(STACK & s) { int i; while (!isempty(s)) //当栈不为空 不断的出栈取值 { pop(s,i); cout<<i<<endl; } } |
队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | //使用类来定义队列 class DUILIE { public : QUEUE q; //队列的基本操作 void csh(QUEUE & q); //初始化 bool isempty(QUEUE & q); //判断是否为空 bool isfull(QUEUE & q); //判断是否为满 int head(QUEUE & q); //取队头元素 bool pop(QUEUE & q, int & val); //将队头元素出队 bool push(QUEUE & q, int val); //将队尾元素入队 void SHOW(QUEUE & q); //遍历队列 }; void DUILIE::csh(QUEUE & q) { q.f=-1; q.r=-1; } bool DUILIE::isempty(QUEUE & q) { return q.f==q.r? true : false ; } bool DUILIE::isfull(QUEUE & q) { if (q.r==MAX-1) return true ; else return false ; } int DUILIE::head(QUEUE & q) { if (isempty(q)) { cout<< "此队列为空!!" <<endl; } else { return q.data[q.f+1]; } } bool DUILIE::pop(QUEUE & q, int & val) { if (isempty(q)) return false ; else { val=q.data[++q.f]; return true ; } } bool DUILIE::push(QUEUE & q, int val) { if (isfull(q)) return false ; else { q.data[++q.r]=val; return true ; } } void DUILIE::SHOW(QUEUE & q) { if (isempty(q)) cout<< "此队列为空!!" <<endl; else { for ( int i=q.f+1; i<=q.r; i++) cout<<q.data[i]<< " " ; cout<<endl; } } |
实验效果如如下:
老规矩,有错改之,无则加勉。
一起学习,一起进步。
去吃饭了哈哈。
因为我的代码是贴上去的 而不是写的 居然说不足150字不让发布
以下是凑字数的,忽略忽略;
山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?
若本文内容有误,请指出,我会更改,谢谢!
转载请注明出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库