2010ACM程序设计竞赛培训1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2010春程序设计培训(一) 内容介绍 这一部分是数据结构: 1、基本的数据结构:介绍顺序表、链表、队列、栈、数组等 2、较复杂数据结构:介绍树和图 章节目录 第一部分 概述 第二部分 线性表 1.1 基本概念和术语 概念与述语总结: 数据(Data)、数据对象(Data Object)、数据元素(Data Element) 、数据项 元素(element)、结点(node)、数据域、项、组合项 数据结构(Data Structure)、逻辑结构、物理结构 逻辑结构、物理结构、算法设计、算法实现 线性结构、非线性结构 顺序映像和非顺序映像、顺序存储结构、链式存储结构 2.7 队列 1.队列的定义 队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。    就象生活中的排队购物,或者操作系统中的作业排队。先进入队列的成员总是先离开队列。因此队列亦称作先进先出(First In First Out)的线性表,简称FIFO表。 2.7 队列 1.队列的定义 当队列中没有元素时称为空队列。 在空队列中依次加入元素a1,a2,…an之后: a1是队头元素, an是队尾元素。 显然退出队列的次序也只能是a1,a2,…an 即队列的修改是依先进先出的原则进行的。 下图是队列的示意图: 2.7 队列 2.链队列 队列的链式存储结构简称为链队列,它是限制仅在表头删除和表尾插入的单链表。 显然仅有单链表的头指针不便于在表尾做插入操作,为此再增加一个尾指针,指向链表的最后一个结点。 于是,一个链队列由一个头指针和一个尾指针唯一确定。 2.7 队列 2.链队列 和顺序队列类似,我们也是将这两个指针封装在一起,将链队列的类型LinkQueue定义为一个结构类型: typedef struct queuenode{ datatype data; struct queuenode *next; }queuenode;//队列结点 typedef struct{ queuenode *front; queuenode *rear; }linkqueue ;//队列 2.7 队列 2.链队列 由于一个链队列,由于它是由一个队头指针和一个队尾指针确定,对于一个空队列而言,两个指针会同时指向同一个(空结点),而空结点的链域即指向空。 初始化一个空队列时,其运算如下: void initqueue(linkqueue *q)//1.初始化 { q–front=q–rear=null; } 2.7 队列 2.链队列 因为队列是一个插入、删除运算受限的线性表,因此其特殊性体现在插入和删除两个运算上  void enqueue(linkqueue *q,datatype x)//入队 { queuenode *p p=(queuenode * )malloc(sizeof(queuenode));//申请结点 p–data=x;//结点赋值 p–next=null;//结点指针赋值 if(queueempty(q))//判断被插入队列是否为空 q–front=q–rear=p;//为空时队头指针和队尾指针都需要调整 else{ q–rear–next=p; q–rear=p; }//不为空时只需调整队尾指针 } 2.7 队列 2.链队列 Datatype dequeue(linkqueue *q)//出队 { datatype x; queuenode *p if(queueempty(q))//判断是否为空 error(“queue underflow”); p=q–front;//准备释放该结点 x=p–data; q–front=p–next; if(q–rear==p)q–rear=null; //最后一个元素删除时,队尾指针也要作调整 free(p); return x; } //求队头结点的操作 //则不需要删除元素 2.7 队列 3.顺序队列    队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。    和顺序表一样,顺序队列也是必须用一个向量空间来存放当前队列中的元素。 2.7 队列 3.顺序

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档