若使用循环链表来表示队列,p是链表中的一个指针。试基于此结构给出队列的插入(enq

来源:百度知道 编辑:UC知道 时间:2024/09/21 07:01:35
紧急啊
救命啊

typedef int DateType;
struct Node;
typedef struct Node *PNode;

struct Node//结点结构
{
DateType info;
PNode link;
};
void enQueue_link(PNode &p,DateType x);//声明
//定义
void enQueue_link(PNode &p,DateType x)//入队列
{

PNode flag=NULL;//flag 始终指向第一个结点
PNode q=NULL;
if(p==NULL)//创建第一个结点
{if((p=(PNode)malloc(sizeof(struct Node)))==NULL)
printf("空间分配失败!\n");
p->info=x;
p->link=p;//头指针p 始终指向尾结点
flag=p;
}
else //创建其他结点
{ flag=p->link;//在改变头指针指向前使flag始终保持指向首结点
q=p;
if((p=(PNode)malloc(sizeof(struct Node)))==NULL)
printf("空间分配失败!\n");
p->info=x;
q->link=p;
p->link=flag;}
}

p=(queueptr)malloc(sizeof(qnode));
if(!p) exit(OVERFLOW);
p->date=e;p->next=NULL;<