1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 队列的定义与操作-顺序存储 链式存储(C语言)

队列的定义与操作-顺序存储 链式存储(C语言)

时间:2023-03-23 12:52:18

相关推荐

队列的定义与操作-顺序存储 链式存储(C语言)

顺序存储:

typedef int Position;struct QNode {ElementType *Data;/* 存储元素的数组 */Position Front, Rear; /* 队列的头、尾指针 */int MaxSize; /* 队列最大容量 */};typedef struct QNode *Queue;Queue CreateQueue( int MaxSize ){Queue Q = (Queue)malloc(sizeof(struct QNode));Q->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));Q->Front = Q->Rear = 0;Q->MaxSize = MaxSize;return Q;}bool IsFull( Queue Q ){return ((Q->Rear+1)%Q->MaxSize == Q->Front);}bool AddQ( Queue Q, ElementType X ){if ( IsFull(Q) ) {printf("队列满");return false;}else {Q->Rear = (Q->Rear+1)%Q->MaxSize;Q->Data[Q->Rear] = X;return true;}}bool IsEmpty( Queue Q ){return (Q->Front == Q->Rear);}ElementType DeleteQ( Queue Q ){if ( IsEmpty(Q) ) {printf("队列空");return ERROR;}else {Q->Front =(Q->Front+1)%Q->MaxSize;return Q->Data[Q->Front];}}

链式存储:

typedef struct Node *PtrToNode;struct Node {/* 队列中的结点 */ElementType Data;PtrToNode Next;};typedef PtrToNode Position;struct QNode {Position Front, Rear; /* 队列的头、尾指针 */int MaxSize; /* 队列最大容量 */};typedef struct QNode *Queue;bool IsEmpty( Queue Q ){return ( Q->Front == NULL);}ElementType DeleteQ( Queue Q ){Position FrontCell; ElementType FrontElem;if ( IsEmpty(Q) ) {printf("队列空");return ERROR;}else {FrontCell = Q->Front;if ( Q->Front == Q->Rear ) /* 若队列只有一个元素 */Q->Front = Q->Rear = NULL; /* 删除后队列置为空 */else Q->Front = Q->Front->Next;FrontElem = FrontCell->Data;free( FrontCell ); /* 释放被删除结点空间 */return FrontElem;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。