网站一个一个关键词做,济南做网站 推荐行知科技,做社交网站框架,年度网站建设工作总结目录 一、队列的结构定义
二、队列的初始化
三、队列的打印
四、入队
五、出队
六、取队头元素
七、取队尾元素
八、判断队列是否为空
九、求队列大小
十、销毁队列
十一、测试代码 一、队列的结构定义
//队列的结构定义
typedef int QDataType;typedef struct Queu…目录 一、队列的结构定义
二、队列的初始化
三、队列的打印
四、入队
五、出队
六、取队头元素
七、取队尾元素
八、判断队列是否为空
九、求队列大小
十、销毁队列
十一、测试代码 一、队列的结构定义
//队列的结构定义
typedef int QDataType;typedef struct QueueNode {QDataType val;struct QueueNode* next;
}QNode;//将头指针和尾指针存放到一个结构体中组成队列易于找到队列头和尾且无需使用二级指针
typedef struct QueueNode {QNode* phead;QNode* ptail;int size;
}Queue;
二、队列的初始化
//队列的初始化
void QueueInit(Queue* pq)
{assert(pq);pq-phead pq-ptail NULL;pq-size 0;
}
三、队列的打印
//队列的打印
void QueuePrint(Queue* pq)
{assert(pq);if (pq-phead NULL)printf(NULL\n);else{QNode *cur pq-phead;while (cur){printf(%d , cur-val);}printf(\n);}
}
四、入队
//入队列
void QueuePush(Queue* pq, QDataType x)
{assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-val x;newnode-next NULL;if (pq-phead NULL){pq-phead pq-ptail newnode;}else{pq-ptail-next newnode;pq-ptail newnode;}pq-size;
} 五、出队
//出队列
void QueuePop(Queue* pq)
{assert(pq);assert(pq-ptail);if (pq-phead pq-ptail)//队列中只有一个元素{pq-ptail NULL;}QNode* tmp pq-phead;pq-phead pq-phead-next;free(tmp);tmp NULL;pq-size--;
}
六、取队头元素
//取队头元素
QDataType QueueFront(Queue* pq)
{assert(pq);assert(pq-phead);//空队列return pq-phead-val;
}
七、取队尾元素
//取队尾元素
QDataType QueueBack(Queue* pq)
{assert(pq);assert(pq-ptail);//空队列return pq-ptail-val;
}
八、判断队列是否为空
//判断队列是否为空
bool QueueEmpty(Queue* pq)
{return pq-phead NULL;
}
九、求队列大小
//求队列大小
int QueueSize(Queue* pq)
{assert(pq);return pq-size;
}
十、销毁队列
//销毁队列
void QueueDestroy(Queue* pq)
{assert(pq);QNode* cur pq-phead;while (cur){QNode* tmp cur;cur cur-next;free(tmp);tmp NULL;}pq-phead NULL;pq-ptail NULL;pq-size 0;
}
十一、测试代码
void test01()
{//定义一个队列Queue q;//初始化队列QueueInit(q);//入队QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);QueuePush(q, 4);QueuePush(q, 5);//队列打印QueuePrint(q);//出队列QueuePop(q);QueuePop(q);QueuePop(q);//队列打印QueuePrint(q);//取队头元素printf(%d\n, QueueFront(q));//取队尾元素printf(%d\n, QueueBack(q));//判断队列是否为空if (QueueEmpty(q))printf(空\n);elseprintf(非空\n);//求队列大小printf(%d\n, QueueSize(q));//销毁队列QueueDestroy(q);
}int main()
{test01();
}