数组实现队列:
#include<iostream>
using namespace std;
int rear=0,front=0,l=3;
int arr[3];
bool isfull(){
if((rear+1)%l==front){
return true;
}else{
return false;
}
}
bool isempty(){
if(rear==front){
return true;
}else{
return false;
}
}
void push(int num){
if(!isfull()){
arr[rear]=num;
rear = (rear+1)%l;
}else{
cout<<"队列已满";
}
}
void pop(){
if(!isempty()){
cout<<arr[front];
front = (front+1)%l;
}else{
cout<<"队列为空";
}
}
int main(){
push(1);
push(2);
pop();
pop();
return 0;
}
链表实现队列:
#include<iostream>
#include<iomanip>
using namespace std;
struct Node{
int num;
Node *next;
};
Node *front,*temp;
bool isempty(Node *head){
if(head->next==NULL){
return true;
}else{
return false;
}
}
void push(Node *head,int a){
temp=new Node();
temp->num=a;
temp->next=NULL;
if(head->next==NULL){
head->next=temp;
}else{
temp->next=head->next;
head->next=temp;
}
}
void top(Node *head){
if(head->next==NULL){
cout<<"队列为空";
}else{
temp=head;
while(temp->next!=NULL){
temp=temp->next;
}
cout<<temp->num;
}
}
void pop(Node *head){
if(head->next==NULL){
cout<<"队列为空";
}else{
temp=head;
while(temp->next->next!=NULL){
temp=temp->next;
}
cout<<temp->next->num;
temp->next=NULL;
}
}
int main()
{
front=new Node();
front->next=NULL;
push(front,2);
push(front,1);
push(front,3);
pop(front);
pop(front);
top(front);
return 0;
}