用单链表的基本操作实现链队列

来源:互联网 发布:java web前端开发课程 编辑:程序博客网 时间:2024/05/10 06:17

用单链表的基本操作实现链队列的9个基本操作

typedef ElemType QElemType;#define LNode QNode#define LinkList QueuePtrvoid InitQueue(LinkQueue &Q){    InitList(Q.front);//以Q.front为头指针,构造空链表    Q.rear = Q.front;//Q.rear和Q.front共同指向链队列的头结点}void DestroyQueue(LinkQueue &Q){    DestroyList(Q.front);//销毁Q.front为头指针的链表,且置Q.front为空    Q.rear = Q.front;//置Q.front也为空}void ClearQueue(LinkQueue &Q){    ClearList(Q.front);//清空以Q.front为头指针的链表,头指针的指针域为空    Q.rear = Q.front;//Q.rear也指向空队列的头结点}Status QueueEmpty(LinkQueue Q){    return ListEmpty(Q.front);}int QueueLength(LinkQueue Q){    return ListLength(Q.front);}Status GetHead(LinkQueue Q, QElemType &e){    return GetElem(Q.front, 1, e);}void EnQueue(LinkQueue &Q, QElemType e){    ListInsert(Q.front, ListLength(Q.front) + 1, e);}Status DeQueue(LinkQueue &Q, QElemType &e){    if (Q.front->next == Q.rear)        Q.rear = Q.front;    return ListDelete(Q.front, 1, e);}void ListTraverse(LinkQueue Q, void(*visit)(ElemType&)){    ListTraverse(Q.front, visit);}
0 0
原创粉丝点击