关于 队列 的基本操作,欢迎大家打拍砖
本帖最后由 yuprxk 于 2012-6-18 17:38 编辑/*linkqueue.h*/
#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE 1
typedef int BOOL;
typedef int ELEMENTTYPE;
typedef struct tag_NODE
{
ELEMENTTYPE data;
struct tag_NODE * next;
}NODE, *PNODE;
typedef struct tag_LINKQUEUE
{
PNODE front;
PNODE rear;
}LINKQUEUE, *PLINKQUEUE;
BOOL LinkQueueInit (PLINKQUEUE pLinkQueue)
{
PNODE pHeader = (PNODE) malloc (sizeof (NODE));
if (!pHeader)
{
printf ("LinkQueueInit: pHeader\n");
return FALSE;
}
pHeader->data = 0; //用作队列的长度,虽然程序没有用到
pHeader->next = NULL;
pLinkQueue->front = pHeader;
pLinkQueue->rear = pHeader;
return TRUE;
}
BOOL LinkQueueIn (PLINKQUEUE pLinkQueue, ELEMENTTYPE elementValue)
{
PNODE pNode = (PNODE) malloc (sizeof (NODE));
if (!pNode)
{
return FALSE;
}
pNode->data = elementValue;
pNode->next = NULL;
pLinkQueue->rear->next = pNode;
pLinkQueue->rear = pNode;
pLinkQueue->front->data ++;
return TRUE;
}
BOOL LinkQueueOut (PLINKQUEUE pLinkQueue, ELEMENTTYPE * pElementValue)
{
PNODE pOut;
if (pLinkQueue->rear == pLinkQueue->front) //要出队,必需确保队中有元素可出
{
return FALSE;
}
pOut = pLinkQueue->front->next;
if (pElementValue)
{
*pElementValue = pOut->data;
}
pLinkQueue->front->next = pOut->next;
free (pOut);
if (! pLinkQueue->front->next) //若删除后,队列为空,则改变rear的指向
{
pLinkQueue->rear = pLinkQueue->front;
}
pLinkQueue->front->data --;
return TRUE;
}
void LinkQueueDestroy (PLINKQUEUE pLinkQueue)
{
PNODE q;
PNODE p = pLinkQueue->front;
while (p)
{
q = p->next;
free (p);
p = q;
}
}
void LinkQueueShow (const PLINKQUEUE pLinkQueue)
{
PNODE p = pLinkQueue->front->next;
while (p)
{
printf (" %d ", p->data);
p = p->next;
}
}
//简单的测试
#include "linkqueue.h"
int main ()
{
int i;
LINKQUEUE lq;
LinkQueueInit (&lq); //初始化
for (i = 0; i < 9; i++)
{
LinkQueueIn (&lq, i);
LinkQueueShow (&lq);//每次入队的时候,都能立即看到结果
printf ("\n");
}
LinkQueueOut (&lq, NULL); //出队
LinkQueueShow (&lq);
printf ("\n");
LinkQueueDestroy (&lq); //不用了,就要销毁
}
{:2_29:} 咋没有注释?
看的很费尽
编码 也有问题 {:2_27:} 懑道 发表于 2012-6-18 15:57 static/image/common/back.gif
咋没有注释?
看的很费尽
编码 也有问题
注释我已经修改,编码哪里有问题,请指正。 赞一个。。 看看老帖,支持下 再看看,回帖支持支持 支持一下。。争取自己做出
页:
[1]