/*链式队列:使用链节点管理数据成员(C语言实现版)*/
/*特点:
动态变长,使用链表作为基本数据结构: 头结点-->对头-->.....-->队尾
不存在伪溢出的问题,长度没有限制,但是插入和删除节点的时间代价较高(动态分配空间)*/
#include <stdio.h>
#include <stdlib.h>
/*定义一个链表节点作为基本数据结构*/
typedef struct node {
int data ;
struct node *next ;
}QNode ;
/*定义队列*/
typedef struct{
QNode *front; /*头指针*/
QNode *rear; /*尾指针*/
}Queue ;
/*1、初始化队列*/
int InitQueue(Queue *Q){
Q->front = Q->rear = malloc(sizeof( QNode)) ; /*分配空间*/
if(!Q->front)
return -1 ;
Q->front->next = NULL ; /*构造一个空队列*/
return 0 ;
}
/*2、清空队列:由于空间随着元素的插入动态分配,清空时也要释放动态空间,回归到初始化状态*/
void ClearQueue(Queue *Q){
QNode *p ;
QNode *q;
/*先让尾指针 = 头指针*/
Q->rear = Q->front ;
p = Q->front->next ;
Q->front->next = NULL ;
while(p){
q = p ;
p = p->next ;
free(q) ;
}
}
/*3、销毁队列,即将整个队列
链式队列基本操作
最新推荐文章于 2022-07-08 21:52:40 发布