/*_############################################################################
_##
_## 链表实现的队列
_## Author: xwlee
_## Time: 2007.01.01
_## Chang'an University
_## Development condition: win2003 Server+VC6.0
_##
_## link_queue.cpp 文件
_##########################################################################*/
#include "stack.h"
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define FALSE 0
typedef struct QUEUE_NODE {
QUEUE_TYPE value;
struct QUEUE_NODE *next;
}queuenode;
static queuenode *front = NULL;
static queuenode *rear = NULL;
// create_queue函数
int create_queue( size_t size )
{
return 1; // 预留接口函数.
}
// destroy_queue函数
int destroy_queue( void )
{
while( !is_empty() )
{
printf("##: first() is %d/n", first()); // 调试使用.
mydelete();
}
return 1;
}
// myinsert函数
void myinsert( QUEUE_TYPE value )
{
queuenode *new_node;
new_node = (queuenode *)malloc( sizeof(queuenode) );
if( new_node == NULL )
{
printf("create new_node is false./n");
exit(0);
}
new_node->value = value;
new_node->next = NULL;
if( rear == NULL )
{
rear = new_node;
}
else
{
rear->next = new_node;
rear = new_node;
}
if( front == NULL)
front = rear;
}
// mydelete函数
void mydelete( void )
{
queuenode *first_node;
if( is_empty() ) // 若队列已空,条件成立.
{
printf("queue already empty, delete is false./n");
exit(0);
}
first_node = front;
front = first_node->next;
free( first_node );
}
// first函数
QUEUE_TYPE first( void )
{
if( is_empty() ) // 若队列已空,条件成立.
{
printf("queue already empty./n");
exit(0);
}
return front->value;
}
// is_empty函数
int is_empty( void )
{
return front == NULL; // 只看队列的头指针是否为空.
}
// is_full函数
int is_full( void )
{
return FALSE; // 假定内存很大,链表队列永远都不会满.
}
_##
_## 链表实现的队列
_## Author: xwlee
_## Time: 2007.01.01
_## Chang'an University
_## Development condition: win2003 Server+VC6.0
_##
_## link_queue.cpp 文件
_##########################################################################*/
#include "stack.h"
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define FALSE 0
typedef struct QUEUE_NODE {
QUEUE_TYPE value;
struct QUEUE_NODE *next;
}queuenode;
static queuenode *front = NULL;
static queuenode *rear = NULL;
// create_queue函数
int create_queue( size_t size )
{
return 1; // 预留接口函数.
}
// destroy_queue函数
int destroy_queue( void )
{
while( !is_empty() )
{
printf("##: first() is %d/n", first()); // 调试使用.
mydelete();
}
return 1;
}
// myinsert函数
void myinsert( QUEUE_TYPE value )
{
queuenode *new_node;
new_node = (queuenode *)malloc( sizeof(queuenode) );
if( new_node == NULL )
{
printf("create new_node is false./n");
exit(0);
}
new_node->value = value;
new_node->next = NULL;
if( rear == NULL )
{
rear = new_node;
}
else
{
rear->next = new_node;
rear = new_node;
}
if( front == NULL)
front = rear;
}
// mydelete函数
void mydelete( void )
{
queuenode *first_node;
if( is_empty() ) // 若队列已空,条件成立.
{
printf("queue already empty, delete is false./n");
exit(0);
}
first_node = front;
front = first_node->next;
free( first_node );
}
// first函数
QUEUE_TYPE first( void )
{
if( is_empty() ) // 若队列已空,条件成立.
{
printf("queue already empty./n");
exit(0);
}
return front->value;
}
// is_empty函数
int is_empty( void )
{
return front == NULL; // 只看队列的头指针是否为空.
}
// is_full函数
int is_full( void )
{
return FALSE; // 假定内存很大,链表队列永远都不会满.
}