简单数据结构

 

队列的应用(如 排队面试、操作系统作业管理、约瑟夫问题)、栈应用(如迷宫问题、表达式求值)、树的判断、….

 

 

【约瑟夫问题】(重庆市第二届程序设计大赛题目)

问题描述:

N个教徒和N个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是他们想了一个办法:2N个人围成一圈,从第一个人开始依次循环报数,每数到第9个人就将他扔进大海,如此循环直到只剩下N个人为止。问怎样的站法,才能使得每次投入大海的都是非教徒。

 

输入:

输入文件由一行构成,就是N的值

 

输出:

输出文件是一行字符串,字符串由N个'@'字符(代表教徒)和N个'+'字符(代表非教徒)排列组成。该排列使得按照提述方法每次投入大海的都是非教徒。

 

输入样本:

15

 

输出样本:

@@@@+++++@@+@@@+@++@@+++@++@@+

 

【变形:】指定起点、规定报数方向、限定出列个数、变换步长值、两个方向同时报数

 

 

///

【选拔志愿者】(队列应用 重庆理工大学第四届大学生程序设计大赛试题 第5题)

重庆理工大学要选拔一批志愿者参加一项重要的活动。

参加志愿者选拔的同学们排队接受面试官们的面试。参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查。

面试中每个人的人品是主要考查对象之一。(提高人品的方法有扶老奶奶过街,不闯红灯等)

作为主面试官的John想知道当前正在接受面试的同学队伍中人品值最高的是多少。于是他请你帮忙编写一个程序来计算。

【输入】输入文件名“selection.in”

输入数据第一行为一整数T,表示有T组输入数据。

每组数据第一行为”START”,表示面试开始

接下来的数据中有三种情况:

 

输入

含义

C  NAME  RP_VALUE

名字为NAME的人品值为RP_VALUE的同学加入面试队伍。(名字长度不大于5,0 <= RP_VALUE <= 1,000,000,000)

 

G

排在面试队伍最前面的同学面试结束离开考场。

 

Q

主面试官John想知道当前正在接受面试的队伍中人品最高的值是多少。

最后一行为”END”,表示所有的面试结束,面试的同学们可以依次离开了。

所有参加面试的同学总人数不超过1,000,000

【输出】输出文件名“estdout.pc2”

对于每个询问Q,输出当前正在接受面试的队伍中人品最高的值,如果当前没有人正在接受面试则输出-1。

程序运行后结果示例:

【样例输入】

2

START

C Tiny 1000000000

C Lina 0

Q

G

Q

END

START

Q

C ccQ 200

C cxw 100

Q

G

Q

C wzc 500

Q

END

 

【样例输出】

1000000000

0

-1

200

100

500

 

 

//

 

【卡片游戏】(队列应用)

桌上一叠牌,从第1张开始从上往下依次编号为1~n。 当至少还剩2张牌时进行以下动作:扔掉顶上的第1张牌,然后把新的第1张牌放到整叠牌的最后。

输入n,输出每次扔掉的牌,以及最后剩下的牌。

【样例输入】

7

【样例输出】

1        3  5 7  4  2  6

 

 

【表达式求值】

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、基本概念和术语 数据(Data)  数据是信息的载体。它能够被计算机识别、存储和加工处理,是计算机程序加工的"原料"。  随着计算机应用领域的扩大,数据的范畴包括:  整数、实数、字符串、图像和声音等。 数据元素(Data Element)  数据元素是数据的基本单位。数据元素也称元素、结点、顶点、记录。  一个数据元素可以由若干个数据项(也可称为字段、域、属性)组成。数据项是具有独立含义的最小标识单位。 数据结构(Data Structure)  数据结构指的是数据之间的相互关系,即数据的组织形式。 1.数据结构一般包括以下三方面内容: ① 数据元素之间的逻辑关系,也称数据的逻辑结构(Logical Structure);  数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 ② 数据元素及其关系在计算机存储器内的表示,称为数据的存储结构(Storage Structure);  数据的存储结构是逻辑结构用计算机语言的实现(亦称为映象),它依赖于计算机语言。对机器语言而言,存储结构是具体的。一般,只在高级语言的层次上讨论存储结构。 ③ 数据的运算,即对数据施加的操作。   数据的运算定义在数据的逻辑结构上,每种逻辑结构都有一个运算的集合。最常用的检索、插入、删除、更新、排序等运算实际上只是在抽象的数据上所施加的一系列抽象的操作。  所谓抽象的操作,是指我们只知道这些操作是"做什么",而无须考虑"如何做"。只有确定了存储结构之后,才考虑如何具体实现这些运算。 为了增加对数据结构的感性认识,下面举例来说明有关数据结构的概念。 【例1.1】 学生成绩表,见下表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值