《数据结构》复习笔记--队列
发布时间:2020-12-15 06:02:33 所属栏目:安全 来源:网络整理
导读:队列 维基百科: 队列 ,又称为 伫列 (queue),是先进先出(FIFO,First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为 rear )进行插入操作,在前端(称为 front )进行删除操作。 队列的操作方式和堆栈类似,唯
队列 维基百科: 队列,又称为伫列(queue),是先进先出(FIFO,First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。 队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。
队列的顺序存储: 通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素位置的变量rear组成。 #define Maxsize <储存数据元素的最大个数> typedef struct { ElementType Data[Maxsize]; int rear; int front; } Queue; void AddQ( Queue *PtrQ,ElementType item)//入队列 { if ( (PtrQ->rear+1) % MaxSize == PtrQ->front ) { printf(“队列满”); return; } PtrQ->rear = (PtrQ->rear+1)% MaxSize; PtrQ->Data[PtrQ->rear] = item; } ElementType DeleteQ ( Queue *PtrQ )//出队列 { if ( PtrQ->front == PtrQ->rear ) { printf(“队列空”); return ERROR; } else { PtrQ->front = (PtrQ->front+1)% MaxSize; return PtrQ->Data[PtrQ->front]; } } 队列的链式存储结构: typedef struct Node { ElementType Data; struct Node *Next; } QNode; typedef struct /* 链队列结构 */ { QNode *rear; /* 指向队尾结点 */ QNode *front; /* 指向队头结点 */ } LinkQueue; LinkQueue *PtrQ ; //不带头结点的链式队列出队操作的一个示例: ElementType DeleteQ ( LinkQueue *PtrQ ) { Qnode *FrontCell; ElementType FrontElem; if ( PtrQ->front == NULL) { printf(“队列空”); 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |