数据类型-C-队列
来源:互联网 发布:通信网络优化培训 编辑:程序博客网 时间:2024/06/05 17:35
一、队列是什么
队列是一种可以实现“先进先出”的存储结构,其实,说简单点,队列就是排队,跟我们日常生活中到银行取钱排队,排队打饭在道理上是一样的。
队列通常可以分为两种类型: ①链式队列(由链表实现). ②静态队列(由数组实现),静态队列通常都必须是循环队列. 循环队列的两个参数: ①front,front指向队列的第一个元素. ②rear,rear指向队列的最后一个有效元素的下一元素. 队列的两个基本操作:出队和入队.
二、队列的结构
三、队列的操作
初始化队列
入队(尾部入队)
出队(头部出队)
队列是否为空 队列是否已满四、队列的实现
static PNODE CreatNode(int data){PNODE pnew = (PNODE)malloc(sizeof(NODE));if (pnew == NULL){return NULL;}pnew->data = data;pnew->next = NULL;return pnew;}static PNODE DeleteNode(PNODE qu){PNODE P = qu->next;free(qu);qu = NULL;return P;}//压队列void push(PQUEUE qu, int data){//创建节点PNODE pNew = CreatNode(data);//把最后一个节点的next指针指向新节点if (qu->rear){qu->rear->next = pNew;}else{qu->front = pNew;//qu->rear = pNew;}//把rear指向最后 也就是新节点qu->rear = pNew;}//出队列int pop(PQUEUE qu){//先保存对首元素int da = qu->front->data;//先删除对首元素if(qu->front = DeleteNode(qu->front)){;//如果头不是NULL说明里面有元素,尾部指针不需要改变}else{//头部为NULL,说明列队中没有元素,把尾部制造NULL;qu->rear = NULL;}return da;}//获取大小int GetSize(PQUEUE qu){int size = 0;PNODE p = qu->front;while(p){++size;p = p->next;}return size;}//判断空int IsEmpty(PQUEUE qu){return !qu->front || !qu->rear;}//初始化void init(PQUEUE qu){qu->front = NULL;qu->rear = NULL;}//得到对首int getFront(PQUEUE qu){return qu->front->data;}//显示所有内容void show(PQUEUE qu){PNODE p = qu->front;for (;p;p = p->next){printf("%d>",p->next);}printf("null\n");}
执行文件:
#include "queue_t.h"#include <stdio.h>int main(){QUEUE qu;init(&qu);for (int i = 0; i < 5; i++){push(&qu, 2 * i);}show(&qu);printf("出队列的值%d\n",pop(&qu));show(&qu);push(&qu, 666);show(&qu);printf("大小是%d\n", GetSize(&qu));printf("队列的首元素%d\n",getFront(&qu));//67getchar();//写一个队列.存入的是10个学生信息(id,姓名,年龄),//按照id从小到大的顺序入队列,把学员的信息通过队列首到队//列尾部的顺序打印出来return 0;}
阅读全文
0 0
- 数据类型-C-队列
- 队列-C语言实现-适用各种数据类型
- C 数据类型
- C 数据类型
- c--数据类型
- C 数据类型
- C---数据类型
- c--数据类型
- 数据类型(C#)
- C#-数据类型
- C数据类型
- C数据类型
- C#--数据类型
- C数据类型
- C++:数据类型
- 【C#】数据类型
- C数据类型
- C 数据类型
- 正则表达式验证手机号
- 设置select右对齐
- 机器学习:k-means算法
- 操作系统--总结几种常见的页面置换算法
- Matlab将.mat文件保存为.txt文件
- 数据类型-C-队列
- Banner无限轮播
- java实现找数组中重复数字
- MySQL explain 详解
- hjr-JAVA工作日记(六):RabbitMQ
- Redis-MISCONF Redis问题解决方法
- Lombok 安装、入门
- 阿里云CentOS7使用yum安装mysql
- 通过路由器U盘读取功能实现外网共享内网文件