一、链式队列
链式队列,简称"链队列",即使用链表实现的队列存储结构。
链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头
创建链式队列的 C 语言实现代码为:
//创建链队列结点
typedef struct LinkNode{
int data;
LinkNode* next;
}*LinkNodePtr;
//链队列
typedef struct LinkQueue{
LinkNodePtr front; //队头指针
LinkNodePtr rear; //队尾指针
}*LinkQueuePtr;
初始化
LinkQueuePtr initQueue(){
LinkNodePtr headerPtr=(LinkNodePtr)malloc(sizeof(struct LinkNode));
LinkQueuePtr resultPtr=(LinkQueuePtr)malloc(sizeof(struct LinkQueue));
headerPtr->data=-1;
headerPtr->next=NULL;
resultPtr->front=headerPtr;
resultPtr->rear=headerPtr;
return resultPtr;
}
打印
void outputLinkQueue(LinkQueuePtr paraQueuePtr){
LinkNodePtr tempPtr=paraQueuePtr->front->next;
while(tempPtr!=NULL){
printf("%d ",tempPtr->data);
tempPtr=tempPtr->next;
}
printf("\r\n");
}
链队队列中,当有新的数据元素入队,只需进行以下 3 步操作:
- 将该数据元素用节点包裹,例如新节点名称为 elem;
- 与 rear 指针指向的节点建立逻辑关系,即执行 rear->next=elem;
- 最后移动 rear 指针指向该新节点,即 rear=elem;
-
void enqueue(LinkQueuePtr paraQueuePtr,int e){ //创建新节点 LinkNodePtr p=(LinkNodePtr)malloc(sizeof(LinkNodePtr)); p->data=e; p