#include#include #define N 100 typedef struct Qnode{//这是队列中的结点信息 int data; struct Qnode *next; }Qnode,*Qptr;//定义队列和头指针 //==Qnode *Qptr; //接下来定义指针Qptr Qptr p;//==>Qnode *p typedef struct{//队列属性 Qptr front;//通过front找到整个队列 Qptr rear; }linkqueue;//指向整个队列 int InitQueue(linkqueue &Q){//初始化 Q.front=Q.rear=(Qptr)malloc(sizeof(Qnode));//强制转换为Qptr指针类型 if(!Q.front) return 0; Q.front->next=NULL; } int Gethead(linkqueue Q,int e){//取队头 if(Q.front==Q.rear) return 0; e=Q.front->next->data;//队头在头结点的后一个元素 } void DestroyQueue(linkqueue &Q){//销毁队列 while(Q.front){//不为空 p=Q.front->next;//指向首元素(头结点的后一个) free(Q.front); Q.front=p;//首元素后移 }//反正rear指针也没用,用它也行 return; } void EnQueue(linkqueue &Q,int e){//入队e p=(Qptr)malloc(sizeof(Qnode)); if(!p) return;//总是要看下分配成功没 p->data=e; p->next=NULL;//开辟结点完成 Q.rear->next=p;//连接 Q.rear=p;//改变尾指针 } void OutQueue(linkqueue &Q,int &e){//出队e if(Q.front==Q.rear) return;//如果队空返回 p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p)//删除的如果是尾结点,那么两个一样 Q.rear=Q.front; delete p; return ; } int main() { return 0; }



