c语言水王争霸链表,专题1-1(线性表基础).ppt

专题1-1(线性表基础)

ADT Queue { 数据对象: D={ai | ai∈ElemSet, i=1,2,...,n, n≥0} 数据关系: R1={ | ai-1, ai ∈D, i=2,...,n} 约定其中a1 端为队列头, an 端为队列尾 基本操作: 1.3.4 队列的类型定义 } ADT Queue 队列的基本操作: InitQueue(&Q) DestroyQueue(&Q) QueueEmpty(Q) QueueLength(Q) GetHead(Q, &e) ClearQueue(&Q) DeQueue(&Q, &e) EnQueue(&Q, e) QueueTravers(Q, visit()) 1.3.5 队列类型的实现 链队列——链式映象 循环队列——顺序映象 typedef struct QNode {// 结点类型 QElemType data; struct QNode *next; } QNode, *QueuePtr; 链队列——链式映象 typedef struct { // 链队列类型 QueuePtr front; // 队头指针 QueuePtr rear; // 队尾指针 } LinkQueue; a1 ∧ an … Q.front Q.rear Q.front Q.rear ∧ 空队列 #define MAXQSIZE 100 //最大队列长度 typedef struct { QElemType *base; // 动态分配存储空间 int front; // 头指针,若队列不空, // 指向队列头元素 int rear; // 尾指针,若队列不空,指向 // 队列尾元素 的下一个位置 } SqQueue; 循环队列——顺序映象 由于计算机输入计算结果的精度通常受到计算机的限制,如:在双精度方式下,计算机最多只能输出16位有效数字,如果超过16位,则只能按浮点形式输出,另外,一般计算机实数表示的范围为1038,如果超过这个范围,计算机就无法表示了。但是我们可以通过一些简单的办法来解决这个问题。这就是我们要说的高精度计算。 应用1:高精度运算 基本方法 在计算机上进行高精度计算,首先要处理好以下几个基本问题: ①数据的接收与存储; ②计算结果位数的确定; ③进位处理和借位处理; ④商和余数的求法; 【例】 水王争霸。 众所周知,BJHCForum有很多水王,他们的发贴数是如此之多,以至于必须要用高精度数才能保存。为了迎接国庆,BJHCForum决定举行一次水王争霸赛,比赛的规则是将这些水王截止到2013年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。终于,激动人心的一刻到来了,2013年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。 对于数据处理工作,排序是最基本的运算之一。在当今的计算机系统中,花费在排序上的时间占系统CPU运行时间有很大比重。为了提高计算机的工作效率,人们提出了各种各样的排序算法。 排序通常被理解为按规定的次序重新安排给定的一组对象。排序的目的是方便以后在排列的集合中查找某一成员。日常生活中的电话号码簿、目录表、图书馆、词典以及一切需对所存贮的对象进行检索的地方都要先将对象加以排序。 排序定义:假设含n个记录的序列为{R1,R2,...Rn},其相应的关键字值序列为{k1,k2,...kn}。这样一些记录重新排列为,使得相应的关键值满足条件ki1<=ki2<=...<=kin,这样一种运算称为排序。(升序,相反为降序) 排序算法的优劣表现在算法的时间复杂性和空间复杂性上。 应用2:排序算法 【例子】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值