主题:菜鸟求救 数据结构题
hekangkang
[专家分:0] 发布于 2012-03-20 19:37:00
假设以头结点的循环列表表示队列,并且只设一个指针指向队列为节点。试编程相应的队列初始化,入队列和出队列的算法!!!!
回复列表 (共3个回复)
沙发
bohekang [专家分:0] 发布于 2012-04-01 13:55:00
以前看过类似的,现在忘记了。。
最近开发的。。
生物试剂 http://www.shijihe5.com/
板凳
xiahgkaie [专家分:0] 发布于 2012-04-06 10:55:00
路过~~~~
3 楼
night_coffee [专家分:0] 发布于 2012-04-16 20:32:00
我把单链队列的尾指针换成temp指针,使其始终指向倒数第二个结点,并使队列链的最后一个结点指向头结点,这样实现起来就很简单了,算法如下 不知是否合楼主要求
typedef struct QNode
{
QElemType data;
struct QNode *next;
}QNode,*QueuePty;
typedef struct
{
QueuePtr front;//头结点
QueuePtr temp;
}LinkQueue;
Status InitQueue(LinkQueue &Q)
{
Q.front=Q.temp=(QueuePty)malloc(sizeof(QNode));
if(!Q.front) exit(OVERFLOW);
Q.temp->next=front;//队列最后一个节点指向头结点
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType e)
{
while(temp->next!=front) temp=temp->next; //使temp指针始终指向倒数第二个结点
p=(QueuePty)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW);
p->data=e;
p->next=front;
temp->next=p;
temp=p;
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType &e)
{
while(temp->next!=front) temp=temp->next;
if(Q.front->next==front) //队列中只有头结点
return ERROR;
p=front->next;
Q.front->next=p->next;
e=p->data;
free(p)
return OK;
}
我来回复