数据结构之队列
1概念:在一端进行数据插入(入队列)),在另一端进行删除(出队列)
2.特点 :先进先出 (恶心 比喻 哈哈哈 .:先吃进去的先拉出来);
3 .具体的实现:我们是以链表的形式对队列来进行操作的.
4 代码实现过程:
第一部分 :创建头文件"queuek.h" 这部分我们定义队列的结构,以及声明一下队列的操作函数
#pragma once
typedef int QDataType;
//定义节点的结构
typedef struct QNode{
struct QNode *_pNext;
QDataType _data;
}QNode;
//定义队列
typedef struct Queue{
QNode* _front;//指向队头元素
QNode*_back;//指向队尾元素
}Queue;
void QueueInit(Queue*q);
void QueuePush(Queue*q, QDataType data);
void QueuePop(Queue*q);
QDataType QueueFront(Queue*q);
QDataType QueueBack(Queue*q);
int QueueSize(Queue*q);
int QueueEmpty(Queue*q);
void QueueDestory(Queue*q);
void TestQueue();
第二部分 ,我们创建一个 源文件queue.c" 这一部分我们具体定义一下各个操作函数的功能,
else{
q->_back->_pNext = pNewNode;
q->_back = pNewNode;
}
}
void QueuePop(Queue*q){
assert(q);
if (QueueEmpty(q)){
return ;
}
QNode*pDelNode = q->_front;
if (NULL == pDelNode->_pNext){
q->_front = q->_back = NULL;
}
else{
q->_front = pDelNode->_pNext;
}
free(pDelNode);
}
QDataType QueueFront(Queue*q){
assert(q);
return q->_front->_data;
}
QDataType QueueBack(Queue*q){
assert(q);
return q->_back->_data;
}
int QueueSize(Queue*q){
int count = 0;
QNode*pcur = q->_front;
while (pcur){
count++;
pcur = pcur->_pNext;
}
return count;
}
int QueueEmpty(Queue*q){
assert(q);
return NULL == q->_front;
}
void QueueDestory(Queue*q){
QNode*pcur = q->_front;
while (pcur){
q->_front = pcur->_pNext;
free(pcur);
pcur = q->_front;
}
q->_front = q->_back = NULL;
}
void TestQueue(){
Queue q;
QueueInit(&q);
QueuePush(&q, 1);
QueuePush(&q, 2);
QueuePush(&q, 3);
QueuePush(&q, 4);
printf("front=%d\n", QueueFront(&q));
printf("back=%d\n", QueueBack(&q));
printf("size=%d\n", QueueSize(&q));
QueuePop(&q);
printf("front=%d\n", QueueFront(&q));
printf("back=%d\n", QueueBack(&q));
printf("size=%d\n", QueueSize(&q));
QueuePop(&q);
QueuePop(&q);
printf("front=%d\n", QueueFront(&q));
printf("back=%d\n", QueueBack(&q));
printf("size=%d\n", QueueSize(&q));
QueuePop(&q);
printf("size=%d\n", QueueSize(&q));
QueueDestory(&q);
}
第三部分 ,我们创建一个头文件"test.c" 定义函数的入口函数 main
#include"queue.h"
#include<stdio.h>
#include<stdlib.h>
int main(){
TestQueue();
system("pause");
return 0;
}