c语言实现链队列
#include <stdio.h>
#include <stdlib.h>
//定义
typedef struct QNode{
int data;
struct QNode *next;
}qnode,*queueptr;
typedef struct{
queueptr front;
queueptr rear;
}linkqueue;
//初始化
bool InitQueue(linkqueue &q){
q.front = q.rear = (queueptr)malloc(sizeof(qnode));
q.front->next = NULL;
return true;
}
//判队空
bool QueueEmpty(linkqueue &q){
if(q.front == q.rear)
return true;
else
return false;
}
//入队
bool EnQueue(linkqueue &q,int e){
queueptr p;
p = (queueptr)malloc(sizeof(qnode));
p->data = e;
q.rear->next = p;
q.rear = p;
q.rear->next = NULL;
return true;
}
//取第一个元素
int GetFront(linkqueue &q){
return q.front->next->data;
}
//求链队列长度
int Length(linkqueue &q){
int count = 0;
queueptr p= q.front;
while(p != q.rear){
count++;
p = p->next;
}
return count;
}
//出队
int DeQueue(linkqueue &q,int &e){
qnode *p;
p = q.front->next;
e = p->data;
q.front->next = p->next;
free(p);
return e;
}