//链表节点
struct Node{
int val;
struct Node* next;
};
//队列
class queue{
private:
struct Node* top; //取数据端
struct Node* rear; //放数据端
int count; //元素个数计数器
public:
queue(){
rear = new struct Node;
rear->next = NULL;
top = rear;
count = 0;
}
void push_back(int n){
rear->val = n;
rear->next = new struct Node;
rear = rear->next;
rear->next = NULL;
count++;
}
int front(){
return top->val;
}
void pop(){
struct Node *temp = top;
top = top->next;
count--;
delete temp;
}
int size(){
return count;
}
bool empty(){
return count==0;
}
~queue(){
while(top!=NULL){
struct Node* temp = top;
top = top->next;
delete temp;
}
}
};
//栈
class stack{
private:
struct Node *p; //栈顶
int count; //元素个数计数器
public:
stack(){
p = new struct Node;
p->next = NULL;
count = 0;
}
void push(int n){
p->val = n;
struct Node *pt = new struct Node;
pt->next = p;
p = pt;
count++;
}
int top(){
return p->next->val;
}
void pop(){
struct Node *pt = p->next;
p->next = pt->next;
delete pt;
count--;
}
int size(){
return count;
}
bool empty(){
return count==0;
}
~stack(){
struct Node *pt = NULL;
while(p!=NULL){
pt = p;
p = p->next;
delete pt;
}
}
};
10-02
680
04-30
127
05-07
5595