在初学数据结构时,无论是创建顺序表还是链表,都不喜欢设一个头结点,直到在昨天写一个链队列时,才发现其作用,下面说明下
链队结构与初始化函数相同
#define MAX 5
typedef struct qnode{ //定义链队中的结点结构
int date; //数据域
struct qnode *next; //指针域
}qnode,*qlink;
typedef struct{
qlink front; //定义链队结构
qlink rear;
}queue;
void init(queue &L) //初始化函数
{
L.front=L.rear=new qnode; //初始化将头指针与尾指针指向同一位置
if(!L.front){
cout<<"ERROR"<<endl;
return;
}
L.front->next=NULL;
cout<<"OK"<<endl;
}
带有头结点的出队入队函数
void enqueue(queue &L,int e) //入队函数
{
L.rear->next=new qnode; //将头指针指向的结点空出 作为头结点,之后依次入队
L.rear=L.rear->next;
if(!L.rear)