当前位置: 首页 > wzjs >正文

win7电脑做网站主机在线包装设计软件

win7电脑做网站主机,在线包装设计软件,南宁模板开发建站,山东菏泽建设银行网站目录 队列的概念和结构 队列的实现 队列初始化 入队操作 出队操作 取队头的元素 判断队列是否为空 队列的销毁 队列的概念和结构 队列:只允许在一端进行插入数据操作,另一端进行删除数据操作的特殊线性结构,具有“先进先出”的特点&am…

目录

队列的概念和结构

 队列的实现

队列初始化

 入队操作

出队操作

取队头的元素 

判断队列是否为空

队列的销毁


队列的概念和结构

队列:只允许在一端进行插入数据操作,另一端进行删除数据操作的特殊线性结构,具有“先进先出”的特点,进行插入数据的一端称为队尾,出数据的一端称为队头。

 队列的实现

队列的实现还是建立三个文件,一个头文件,两个源文件。

typedef int QueDateType;typedef struct SList {struct SList* next;QueDateType date;
}SL;typedef struct Queue {SL* head;SL* tail;int size;
}Queue;

 创建两个结构体,队列的实现是用链表来实现的,如果使用数组来实现,那么效率就太低了,在进行数据删除时,需要挪动数据,在链表中删除数据就是头删,插入数据就是尾插,效率远比使用数组实现高效。

SList是一个节点,成员next 存储下一个节点的地址,date存储该节点的数据,Queue结构体包含两个节点指针,一个指向头,一个指针尾,还有size来统计节点个数。

队列初始化

函数声明

void QueInit(Queue* p);

函数定义

void QueInit(Queue* p)
{assert(p);p->head = p->tail = NULL;p->size = 0;
}

初始化队列,没有节点需要将头指针和尾指针置空,size置为0。

 入队操作

函数声明

void QuePush(Queue* p, QueDateType x);

函数定义

void QuePush(Queue* p, QueDateType x)
{assert(p);SL* newnode = (SL*)malloc(sizeof(SL));if (newnode == NULL){perror("QuePush:malloc");return;}newnode->date = x;newnode->next = NULL;if (p->size == 0){p->head = p->tail = newnode;}else{p->tail->next = newnode;p->tail = newnode;}p->size++;
}

队列的入队操作,根据队列“先进先出”特点,所以我们插入数据在尾部。

先对结构体指针断言,用malloc函数申请一片空间来存储一个节点,这时就有两种情况,一个是队列为空,和队列不为空。当队列为空时,头指针和为尾指针都指向新开辟的节点,当队列不为空,就只需要改变尾指针就可以,最后size++。

出队操作

函数声明

void QuePop(Queue* p);

函数定义

void QuePop(Queue* p)
{assert(p);assert(p->head != NULL);SL* next = p->head->next;free(p->head);p->head = NULL;p->head = next;p->size--;
}

出队操作不能一直执行,当队列为空时不可执行,因此对其断言,头指针不可以为空。定义一个节点指针来保存头指针的下一个节点的地址,这样释放头指针后还可以找到下一个节点,最后size--。

取队头的元素 

函数声明

QueDateType QueTop(Queue* p);

函数定义

QueDateType QueTop(Queue* p)
{assert(p);assert(!QueJuS(p));return p->head->date;
}

除了对结构体判空,还需要对节点个数断言,没有节点就不进行该操作,反之返回队头元素。 

判断队列是否为空

 函数声明

bool QueJuS(Queue* p);

函数定义

bool QueJuS(Queue* p)
{assert(p);return p->size == 0;
}

该函数返回类型为布尔类型,当size等于0时返回true,反之返回false。 

队列的销毁

函数声明

void QueDestroy(Queue* p);

函数定义

void QueDestroy(Queue* p)
{assert(p);SL* cur = p->head;while (cur){SL* next = cur->next;free(cur);cur = next;}p->size = 0;
}

每插入一个节点就需要进行malloc,所以销毁队列时需要对每一个节点进行空间释放,最后size置为0。 

 

 

 

 

 

 


文章转载自:

http://sTA8i8bo.rLwgn.cn
http://FdC76Mpa.rLwgn.cn
http://QGKXrw6s.rLwgn.cn
http://gl4LkAgf.rLwgn.cn
http://MKdF6iyS.rLwgn.cn
http://F9yd66lP.rLwgn.cn
http://j0GbJcJ7.rLwgn.cn
http://v503SGdQ.rLwgn.cn
http://fPNFPXDn.rLwgn.cn
http://EbWsK5fd.rLwgn.cn
http://6HurgeBX.rLwgn.cn
http://5qNXU6Vk.rLwgn.cn
http://tlYKkkTk.rLwgn.cn
http://2nAPotvA.rLwgn.cn
http://fDrxuxnU.rLwgn.cn
http://pdh1GcV9.rLwgn.cn
http://HHdyXQeE.rLwgn.cn
http://cSGSF9mC.rLwgn.cn
http://yKN743SZ.rLwgn.cn
http://c98UagsH.rLwgn.cn
http://8CNlN8ei.rLwgn.cn
http://eh3ZOWZR.rLwgn.cn
http://wDbhGlMd.rLwgn.cn
http://7qLwOPjm.rLwgn.cn
http://lc0Ev5S2.rLwgn.cn
http://GKgIcTmg.rLwgn.cn
http://p8IuP4gB.rLwgn.cn
http://0yBVdl4R.rLwgn.cn
http://baIChTGL.rLwgn.cn
http://N6UmEmAD.rLwgn.cn
http://www.dtcms.com/wzjs/762212.html

相关文章:

  • 改图网站上海营销网站建设公司
  • 手机网站拦截怎么解除如何对网站做引擎优化
  • 宜宾市城乡建设厅网站个人网站 做外贸
  • 旅游网站建设解决方案佛山
  • 惠城网站建设费用装修公司工装公司
  • 网站建设实践报告绪论爱空间家装怎么样?两点告诉你
  • 网站推广排名优化多少钱网站默认图片
  • 网站建设费 科目国外网站用什么dns好
  • wordpress微网站模板李宁运动服网站建设规划书
  • 四川网站建设有哪些上海网站排名优化优化
  • 模仿淘宝详情页做网站做网站的公司赚钱吗
  • 做的比较好的教育网站免费字体设计网站
  • 档案网站建设图片微网站 方案
  • 务川县建设局官方网站网站建设及制作
  • 装修网站php源码wordpress自动多语言
  • 手机网站建设知识wordpress+手工网站
  • 网站建设拾金手指下拉十九车陂手机网站建设电话
  • 优秀的门户网站智慧团建官网网页版入口
  • 做网站前期创建文件夹wordpress文章名称
  • 网站开发研究热点最新新闻事件今天地震
  • 天津武清做淘宝网站为什么不要做外包员工
  • app网站建设教程视频小城镇建设的网站中的主要观点
  • 做百度推广的网站吗字体网站
  • 网站开发公司需要招聘哪些人网站开发培训怎么样
  • 现在企业需要建设网站吗检测一个网站用什么软件做的方法
  • 石家庄建设南大街小学网站牛商网做网站
  • 网站系统中备案申请表苏州广告公司招聘
  • 网站怎么做seo、阿里云服务器上的网站怎么做修改
  • 如何做带后台的网站娄底网站建设wyo8
  • 网站推广的方式和方法网络网站制作