#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define False 0
#define ERROR -1
typedef int Status;
typedef int QElemType;
struct Node
{
QElemType Data;
struct Node* Next;
};
struct QNode/*代表队列*/
{/*链表的头作为队首,链表的尾作为队尾*/
struct Node* rear;
struct Node* front;
};
typedef struct QNode* Queue;
Queue PtrQ;
/*不带头结点的链式队列的出队操作*/
QElemType DeleteQ(Queue PtrQ)
{
struct Node* FrontCell;
QElemType FrontElem;
if (PtrQ->front == NULL)
{
return ERROR;
}
FrontCell = PtrQ->front;
if (PtrQ->front == PtrQ->rear)/*如果队列只有一个元素*/
PtrQ->front = PtrQ->rear = NULL;/*删除后队列置为空*/
else
{
PtrQ->front = PtrQ->front->Next;
}
FrontElem = FrontCell->Data;
free(FrontCell);
return FrontElem;
}
Status EnQueue(Queue PtrQ, QElemType item)
{
Node* s = (Node*)malloc(sizeof(Node));
if (!s)
exit(0);
s->Data = item;
s->Next = NULL;
PtrQ->rear->Next = s;
PtrQ->rear = s;
return OK;
}
/************************带有头结点的链式队列*******************************/
QElemType DeleteQ(Queue PtrQ)
{
struct Node* FrontCell;
QElemType FrontElem;
if (PtrQ->front ==PtrQ->rear)
{
return ERROR;
}
FrontCell = PtrQ->front->Next;
FrontElem = FrontCell->Data;
PtrQ->front->Next = FrontCell->Next;
if (PtrQ->rear == FrontCell)
PtrQ->rear = PtrQ->front;
free(FrontCell);
return FrontElem;
}
数据结构—队列-链式存储,插入删除
最新推荐文章于 2022-03-15 15:34:09 发布