栈一般数组和链表两种实现方式
栈:先进后出、尾入尾出
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; } };
标签:head,return,队列,Car,top,int,tail From: https://www.cnblogs.com/weinan030416/p/17031649.html