1.链队列的初始化
typedef struct Linknode {
int data;
struct Linknode *next;
}Linknode;
typedef struct Linkqueue {
Linknode *front, *rear;
} Linkqueue;
void Init_queue ( Linkqueue &q ){
q.front = q.rear = new Linknode;
q.front ->next = NULL;
}
void Init_que ( Linkqueue &q ){
q.front = NULL;
q.rear = NULL;
}
2.链队列的判空
bool Empty_queue ( Linkqueue &q ){
if ( q.front == q.rear )
return true;
else
return false;
}
bool Empty_que ( Linkqueue q ){
if ( q.front == NULL )
return true;
else
return false;
}
3.链队列的入队操作
void Enter_queue ( Linkqueue &q, int x ){
Linknode *s = new Linknode;
s->data = x;
s->next = q.rear->next ;
q.rear->next = s;
q.rear = s;
}
void Enter_que ( Linkqueue &q, int x ){
Linknode *s = new Linknode;
s->data = x;
s->next = NULL;
if ( q.front == NULL ){
q.front = s;
q.rear = s;
}else{
q.rear->next = s;
q.rear = s;
}
}
4.链队列的出队操作
bool De_queue ( Linkqueue &q, int &x ){
if ( q.front == q.rear )
return false;
Linknode *p = q.front->next;
x = p->data ;
q.front->next = p->next ;
if ( q.rear == p )
q.rear = q.front ;
delete ( p );
return true;
}
bool De_que ( Linkqueue &q, int &x ){
if ( q.front == NULL )
return false;
Linknode *p = q.front ;
x = p->data ;
q.front = p->next;
if ( q.rear == p ) {
q.front = NULL;
q.rear =NULL;
}
delete ( p );
return true;
}