1:
链式队列:链式存储结构的队列
插入元素一端叫队尾(front) 删除元素叫对头(rear)
链式队列的队头指针指向队列的当前队头结点位置,队尾指针指向队列的当前队尾结点位置(指针front指示的是链式队列的对头结点,指针rear指示的是链式队列的队尾结点)
对于不带头结点的链式队列,出队列时可以直接删除对头指针所指的结点,没有头结点的链式队列比有头结点更方便。
链式队列中结点的结构体定义如下:
typedef struct qnode{
DataType data; //链表数据域
struct qnode *next;//链表指针域
}LQNode
为了方便参数调用,通常把链式队列队头指针front和队尾指针rear也定义为如下的结构体
typedef struct{
LQNode *front;
LQNode *rear;
}LQueue;
2:
初始化QueueInitiate(LQueue *Q)
//初始化QueueInitiate(LQueue *Q)
void QueueInitiate(LQueue *Q){
Q->rear==NULL;
Q->front==NULL;
}
//非空否QueueNotEmpty(LQueue Q)
int QueueNotEmpty(LQueue Q){
if(Q.front==NULL) return 0;
else return 0;
}
//入队列QueueAppend(LQueue *Q,DataType x)
int QueueAppend(LQueue *Q,DataType x){
LQNode *p;
p=(LQNode *)malloc(sizeof(LQNode));
p->next =NULL;
if(Q->rear != NULL) Q->rear->next =p;
Q->rear =p;
if(Q->front ==NULL) Q->front=p;
}