栈和队列
栈一般数组和链表两种实现方式
栈:先进后出、尾入尾出
class Stack{ private: int *data;//存放栈中的数据 int maxsize;//栈最大空间 int top;//栈顶 public: //默认空间为10 Stack() //初始化栈 { maxsize = 10; data = new int[maxsize];//分配栈空间 top = -1;//初始化栈顶 } //设置最大空间 Stack(int max_size) { maxsize = max_size; data = new int[maxsize];//分配栈空间 top = -1;//初始化栈顶 } ~Stack() { delete data; } //是否栈空 bool isEmpty() { return (top == -1)?true:false; } //是否栈满 bool isFull() { return (top >= maxsize)?true:false; } //进栈 bool push(int x) { if(isFull()) return false; else data[++top] = x; return true; } //出栈 bool pop(int &x) { if(isEmpty()) return false; else x = data[top--]; return true; } //清除栈 void clear(){ top = -1; } };
队列:先进先出(可以想象为排队)、尾入头出
例子停车场管理
struct Car { char t[5];//进入时间 int sign;//车牌号 Car *next; }; struct Lane { Car *head; Car *tail; Lane() { head=(Car*)malloc(sizeof(Car)); tail=head->next; } bool empty() { return head==tail?true:false; } void push(int tsign)//队尾入 { tail=(Car*)malloc(sizeof(Car)); tail->sign=tsign; tail=tail->next; tail=NULL;//位置加一 } Car* pop()//队头出 { Car *p=head; head=head->next; return p; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】