#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int value;
struct node * next;
} node;
typedef struct queue{
struct node * front;
struct node * rear;
} queue;
node * create_queue_node ( int data) {
node * queue_node = ( node * ) malloc ( sizeof ( node) ) ;
if ( queue_node== NULL ) {
exit ( - 1 ) ;
}
queue_node-> next= NULL ;
queue_node-> value = data;
return queue_node;
}
queue * create_queue ( ) {
queue * head = ( queue * ) malloc ( sizeof ( queue) ) ;
if ( head== NULL ) {
exit ( - 1 ) ;
}
head-> front= NULL ;
head-> rear= NULL ;
return head;
}
void queue_push ( queue * queue_node, int value) {
if ( queue_node-> rear== NULL && queue_node-> front== NULL ) {
queue_node-> front= queue_node-> rear = create_queue_node ( value) ;
} else {
node * new = create_queue_node ( value) ;
queue_node-> rear-> next = new;
queue_node-> rear = new;
}
}
int queue_pop ( queue * queue_node) {
int e;
if ( queue_node-> front== NULL ) {
exit ( - 1 ) ;
}
if ( queue_node-> front== queue_node-> rear) {
node * pop_node = queue_node-> front;
queue_node-> front = NULL ;
queue_node-> rear = NULL ;
e = pop_node-> value;
free ( pop_node) ;
} else {
node * pop_node = queue_node-> front;
queue_node-> front = queue_node-> front-> next;
e= pop_node-> value;
free ( pop_node) ;
}
return e;
}
void display ( queue * queue_node) {
node * head = queue_node-> front;
printf ( "[top] " ) ;
while ( head!= NULL ) {
printf ( "%d " , head-> value) ;
head = head-> next;
}
printf ( "[base]" ) ;
printf ( "\n" ) ;
}
int judge_empty ( queue * head) {
if ( head-> front) {
return 1 ;
}
return 0 ;
}
int main ( ) {
int n;
while ( scanf ( "%d" , & n) != EOF ) {
int i, num;
queue * Queue = NULL ;
for ( i= 0 ; i< n; i++ ) {
scanf ( "%d" , & num) ;
if ( Queue== NULL ) {
Queue = create_queue ( ) ;
queue_push ( Queue, num) ;
} else {
queue_push ( Queue, num) ;
}
}
printf ( "before pop:\n" ) ;
display ( Queue) ;
printf ( "the value of pop:%d\n" , queue_pop ( Queue) ) ;
printf ( "after pop:\n" ) ;
display ( Queue) ;
}
return 0 ;
}
输入样例1 :
5
3 2 1 4 5
输入样例2 :
12
23 34 2 21 45 7 8 0 90 99 15 100
可多组输入,符合牛客OJ输入样式
5
3 2 1 4 5
before pop:
[ top] 3 2 1 4 5 [ base]
the value of pop: 3
after pop:
[ top] 2 1 4 5 [ base]
12
23 34 2 21 45 7 8 0 90 99 15 100
before pop:
[ top] 23 34 2 21 45 7 8 0 90 99 15 100 [ base]
the value of pop: 23
after pop:
[ top] 34 2 21 45 7 8 0 90 99 15 100 [ base]