一个临界点的问题

假设有一组值(大于等于0的数),总量级别:百万以上,需要求出总和在某个值(Y)的位置。实际情况中Y的值一般也是上万的。
比如:有 5,2,0,3,4,6,7,1,11,3 等求在Y=12的位置,
分析如下:
值: 5,2,0,3, 4, 6, 7, 1,11,3
累计:5,7,7,10,14,20,27,28,39,41
此时临界点在第4个数【3】那。如果是10的话,位置也是第4个数。
数据在数据库中,实际处理不考虑数据的排序问题,只需要从总量中找到一片数据总量接近或等于Y。

请教有何算法可以快速定位到临界点的位置.

已知道的算法,
1,逐条累计,可能需要较长时间
2,先按大到小排序,逐块累计,比上面快些。(操作是允许排序的)
3,类似2分的算法,直接对半,累加前半数据比较,大的话再减少一半,小的话加上剩余的一半。无限2分,直至累计值与Y的接近或等于。

这个算累计 我是在数据库ORACLE中做的。

jinnianshilongnian
jinnianshilongnian 序列长度固定吗
大约 7 年之前 回复

4个回答

1、原始表:
t_bill;字段:索引ID(number),分钟值talktime(varchar(40));
2、递归累加生成表:
t_bill_2 ;字段:索引ID(number),分钟值talktime(varchar(40));

递归累加生成表 talktime建立索引

两个表的id一样;

3、可以考虑根据递归累加生成表的talktime分表; 比如1--1000的在1表,依次类推;

4、根据根据Y值查分表编号,然后查

jinnianshilongnian
jinnianshilongnian 客气 很喜欢探讨这种问题 哈哈
大约 7 年之前 回复
weixin_42501429
weixin_42501429 谢谢认真的回答!
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 之前用过 不过按照我的理解也不会很快 因为毕竟要计算 而且要按条走 每次都需要这个流程 我的想法还是 先构建那种累加表 再查 就不那么麻烦了
大约 7 年之前 回复
weixin_42501429
weixin_42501429 select id from( select id,rownum r from ( select ID,talktime,sum(talktime) over (order by to_number(talktime) desc ) total from t_bill where to_number(talktime)>0 order by talktime desc ) x where x.total<=43210 order by x.total desc ) y where rownum=1 安装以上思路写的,其实我对于分析函数不懂的。 应该外挂一张表 可能查询会快些。
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 分析函数 不错 在程序中分页查 然后生成也行,,反正是累加 需要全表扫描 而且顺序
大约 7 年之前 回复
weixin_42501429
weixin_42501429 好吧 找到一个 类似累加的写法:select ID,talktime,sum(talktime) over (order by to_number(talktime) desc ) from t_bill
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 暂时没有想到更快的,我觉得这个表只要分的合理应该不慢 比较是局部查
大约 7 年之前 回复
weixin_42501429
weixin_42501429 我知道累加 是需要循环去累加的,不知道是不是还有更快的方法,如果有我也觉得这个会很快。
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 对, 递归累加生成表 这个是当添加序列时 自动构建的。 其实就是和序列表 一起生成的,而且只需生成一次,下次直接用即可
大约 7 年之前 回复
weixin_42501429
weixin_42501429 相当于加个累加字段total,(累加顺序规则 可能是 大小顺序 或者ID),这样是可以直接去查询到某个值接近Y;这个思路蛮好的,但我不知道,前面这步需要多长时间能做完?效率快吗? 不知道我理解对不对呢?
大约 7 年之前 回复

两个数比较比加运算要省时间,尽量减少加的运算次数,已知Y的值,那么也就是说必须一个一个计算累加到Y附近,这个运算至少要进行一次,则1和2的方法比3要快,最好是从大到小排序,这么的话尽量少的加运算就可以累加到Y值。

zyn010101
zyn010101 select sum(talktime) from table ,表有10w记录,你没有进行加计算,但是数据库依然进行了10w次加法才能返回给你这个结果
大约 7 年之前 回复
zyn010101
zyn010101 二分的话你把sum计算交给了数据库,数据库还是要全表扫描那些记录,你二分几次,它就累计加几次(几万连续累加)的计算,你的sql没有这个算法,不代表计算机不去执行这个算法,数据库的count,avg,sum都需要加计算,跟你用代码实现是一样的。
大约 7 年之前 回复
weixin_42501429
weixin_42501429 如果需要循环几万次的才能到结果,2分的话 可能需要100次,你觉得谁快呢?当然2分1次没有单纯的循环处理1条的快,但是但上W的级别,你还觉得一条条快?
大约 7 年之前 回复
zyn010101
zyn010101 没错,是要循环几万次,但你要明白,你用sum(talktime)的时候,这个是交个数据库来计算的,它依然要计算几万次不是?即便每次都采用2分法来sum(talktime),你进行的累加的计算更多,不是吗?
大约 7 年之前 回复
weixin_42501429
weixin_42501429 count(talktime) 写错, 是 sum(talktime)
大约 7 年之前 回复
weixin_42501429
weixin_42501429 偽代码: FOR i IN 1..321987 LOOP select count(talktime) into tmp from t_bill where rownum <=i order talktime desc ; --将tmp与总量对比 --如果临界值在几万条之后,那么岂不是要循环几万次?这个快?我是请教有无更快算法。我说的方法 我是感觉不快。 END LOOP;
大约 7 年之前 回复

假设有一组值(大于等于0的数),总量级别:百万以上,需要求出总和在某个值(Y)的位置。实际情况中Y的值一般也是上万的
1.
(1000000个数的和) / 1000000 = 一百万的数的平均值
2.
Y / 一百万的数的平均值=等于大约需要累加多少数,然后以这个位置开始判断
3
相差值不大的话就慢慢比较,比较大的话,就从这个位置开始,按步骤1,继续

cttnbcj
ccccj 1.(1000000个数的和) / Y = 以这个数为步长 2 每次按这些这个步长 把数加起来和Y比较 相差不大就一个个慢慢比较 相差大的话 跳转到1 ,按1方法比较。 这个问题的任何方法都只能是O(N) 但是我说的方法二能比较快的接近。 jinnianshilongnian 第三方用到数据库.....,这个。。。呵呵
大约 7 年之前 回复
weixin_42501429
weixin_42501429 你这个其实就类似2分的做法,不过比例去做很不准的。 因为单数据可能很小 也可能很大,当然先排序再去按比例 会好些把。
大约 7 年之前 回复

1.(1000000个数的和) / Y = 以这个数为步长
2 每次按这些这个步长 把数加起来和Y比较
相差不大就一个个慢慢比较 相差大的话 跳转到1 ,按1方法比较。

这个问题的任何方法都只能是O(N)
但是我说的方法二能比较快的接近。

jinnianshilongnian
第三方用到数据库.....,这个。。。呵呵

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
临界点问题思考
零界点问题思考 背景: 公司项目年度活动,需求如下: 1.用户给主播送礼,每收一个礼物获得一积分 2.活动持续15天 每天主播会进行排名,根据排名进行晋级,未晋级的主播视为淘汰,不再记录积分。第一天N进50 ,第二天50进30…… 3.每次晋级后积分重新计算 整体流程 礼物处理流程:前端-&amp;amp;gt;nginx负载-&amp;amp;gt;直播间服务模块-&amp;amp;gt;礼物Mq-&amp;amp;gt;活动服务...
Integer临界点
Integer临界点,也可以说Integer在128这里会开辟新的空间,integer在一段内是相等的,在另一段中却是不等的。 如下代码: Integer m = 127; Integer n = 127; 在这里 n == m。 Integer m = 128 ; Integer n = 128; 这里 n!=m。 如果Integer m = new Integer(1); Integer...
临界点理论 张恭庆 经典
这是学习临界点理论的经典书籍,是张恭庆院士80年代的书,非常经典
matlab分布临界点与假设检验的关系
运用matlab演示假设检验的临界值及与置信水平、显著性水平之间的关系。通过图一眼就可以看出何时在拒绝域。
张乐-如何有效突破DevOps转型的临界点
张乐-如何有效突破DevOps转型的临界点.pdf 高效运维社区合伙人、DevOps时代联合创始人 前百度资深敏捷教练、DevOps专家 国内首批Certified DevOps Master 全球TOP外企,国内一线互联网
oracle 分页大于等于小于分页临界点
正确的: [code=&quot;sql&quot;] SELECT * FROM (SELECT A.*,ROWNUM RN FROM ( select * from t_agent t where t.agent_parent = 20020 and t.agent_state = 0 ) A WHERE ROWNUM 0; [/code] 错误的:这样只会取出21条数据,到临界点,...
如何有效突破DevOps转型的临界点.pdf
如何有效突破DevOps转型的临界点.pdf
接口限流算法(关于临界点处理)
关于接口限流算法总结
索伯列夫空间,临界点理论 偏微分方程
这是学习偏微分方程的启蒙书,可以作为教材,还可以当做参考书,非常有用
如何查询记录中的临界点的记录
表是个流水的记录,假设每5秒记录一次当前的温度 ,如下:rnrnTimePoint TempValue PFrn20131201080100 20.02 0.2 rn20131201080105 27.33 1.2 rn20131201080110 31.36 1.4rn20131201080115 32.00 1.8rn20131201080120 28.59 0.2 rn20131201080125 50.26 1.4rn20131201080130 20.34 1.6rn20131201080135 40.18 1.5rn20131201080140 35.00 1.0 rn20131201080145 20.21 0.2rn20131201080150 20.54 0.2rn20131201080155 31.22 0.9 rnrn得到数据 rn20131201080100 20.02 关rn20131201080110 31.36 开rn20131201080120 28.59 关rn20131201080135 40.18 开rn20131201080145 20.21 关 rnrn中间隔多少条记录不一定,就是要看那个临界的记录,根据 后面两个列进行判断,rnTempValue 在 30.00-50.00 之间 并且 PF 在 1.0-2.0之间 rnrn这种查询,因个人水平问题,除了循环判断,没有太好的想法,求大神指点。rnrn附上测试代码rnrn[code=sql]rnwith tb(TimePoint,TempValue,PF)as(rnselect 20131201080100,20.02,0.2 union rnselect 20131201080105,27.33,1.2 unionrnselect 20131201080110,31.36,1.4 unionrnselect 20131201080115,32.00,1.8 unionrnselect 20131201080120,28.59,0.2 unionrnselect 20131201080125,50.26,1.4 unionrnselect 20131201080130,20.34,1.6 unionrnselect 20131201080135,40.18,1.5 unionrnselect 20131201080140,35.00,1.0 unionrnselect 20131201080145,20.21,0.2 unionrnselect 20131201080150,20.54,0.2 unionrnselect 20131201080155,31.22,0.9 )rnselect * from tbrn[/code]
触碰认知的临界点——人工智能能否取代其开发者?
认知的界限,只能由我们来不断拓宽,而不可能寄托于人工智能来触碰。
如何根据已知时间临界点对记录数进行分类
[code=sql]rnIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbrnGOrnCREATE TABLE #tbrn(rnuserid VARCHAR(4),rntrading DATETIME,rn)rn rninsert into #tbrnvalues('0001','2012-12-01 10:10:01'),rn('0001','2012-12-02 09:21:10'),rn('0001','2012-12-03 11:10:13'),rn('0001','2012-12-04 14:12:51'),rn('0001','2012-12-05 17:22:10'),rn('0001','2012-12-06 14:14:00'),rn('0001','2013-01-01 07:10:01'),rn('0001','2013-01-02 11:13:55'),rn('0001','2013-01-10 18:25:00'),rnrn('0002','2014-01-01 18:09:00'),rn('0002','2014-01-02 19:19:12'),rn('0002','2014-01-03 10:18:33'),rn('0002','2014-02-03 11:22:00'),rn('0002','2014-02-04 10:18:10'),rn('0002','2014-02-07 16:19:30'),rn('0002','2014-03-05 08:22:00'),rn('0002','2014-03-06 19:33:30')rnrnrnIF OBJECT_ID('TEMPDB.DBO.#tc') IS NOT NULL DROP TABLE #tcrnGOrnCREATE TABLE #tcrn(rnuserid VARCHAR(4),rntrading DATE,rn)rn rninsert into #tcrnvalues('0001','2012-12-06'),rn('0002','2014-01-03'),rn('0002','2014-02-07'),rn('0002','2014-03-06')rn[/code]rnrn分别有以上两张表,第一张表是记录明细表,第二张是已知的具体日期时间点表。想根据第二张的每个userid的具体时间点对第一张明细记录进行分类。结果如下:rnrnuserid trading stypern0001 2012-12-01 10:10:01.000 1rn0001 2012-12-02 09:21:10.000 1rn0001 2012-12-03 11:10:13.000 1rn0001 2012-12-04 14:12:51.000 1rn0001 2012-12-05 17:22:10.000 1rn0001 2012-12-06 14:14:00.000 1rn0001 2013-01-01 07:10:01.000 2rn0001 2013-01-02 11:13:55.000 2rn0001 2013-01-10 18:25:00.000 2rn0002 2014-01-01 18:09:00.000 1rn0002 2014-01-02 19:19:12.000 1rn0002 2014-01-03 10:18:33.000 1rn0002 2014-02-03 11:22:00.000 2rn0002 2014-02-04 10:18:10.000 2rn0002 2014-02-07 16:19:30.000 2rn0002 2014-03-05 08:22:00.000 3rn0002 2014-03-06 19:33:30.000 3
考试系统定时提交表单,时间到达临界点时出现问题!!!!!
我做了一个考试系统,通过定时提交表单,强制提交答卷,都是通过js处理的! 在时间未到之前,如果点击提交按钮,则会提示你的题还没答完,不能提交。这也是用js来实现的。但当我在时间还剩下1秒的时候点击提交按钮时,他会弹出不让提交对话框。然后点击确定,此时1秒早已过去,可是画面还是不提交,你要等好几秒它才会走完那一秒钟,而且当你点击页面(表示还可以做题),有时候能做一个题,点的快了还能做好几个题。
奇怪的mssql临界点,务必来看下,散分
一条普通的用于分页的sql语句rnSELECT TOP 20 id FROM table1W WHERE id in (SELECT TOP 7896 id FROM table1W WHERE 1=1 ORDER BY id) order by id descrntable1W 代表1万条数据rn执行这条语句时非常快,不到一秒,可是当你把 7896 改成7897时,就多一条,执行时候就花了5秒.rn同样,当table数据增加到30W的时候rnSELECT TOP 20 id FROM table30W WHERE id in (SELECT TOP 262706 id FROM table30W WHERE 1=1 ORDER BY id) order by id descrn这时候执行花一秒,当你把262706改成262707,就多一条,执行花了多少分钟,我也不知道.rn当数据是50W时,这个临界点是436510rn这个是我在用分页存储过程时发现的,有些页总也分不了,而大部分页都很快.rn后来我用临时表来分页,虽然整体效率慢了,可是怎么也不会出现类似上面的临界点.rn大家帮忙看看是怎么回事rn我的表结构是rnid a b c drn1 aa bb cc ddrn2 df sf df df
实验:找到优化器选择全表扫描和索引范围扫描的临界点
首先创建一张测试表: CREATE TABLE FOO(   USERID NUMBER(20) NULL,   USERNAME VARCHAR2(100),   USERDEPT NUMBER(20),   USERDEPTNAME VARCHAR2(100) ) / 模拟上10万条数据进去: BEGIN   FOR I IN 0..100000 LOOP     I
云端转型突破临界点,金蝶云加速企业云服务落地
作者:刘学习  | 小编:小葱任何事务都有临界点,不管是云计算、大数据、物联网、人工智能、区块链等技术,还是企业数字化转型与管理重构,当超过了某个临界点时,一切都将改变。“数字化的爆发式增长才刚刚开始,新技术、新链接、新服务、新生态、新模式不断涌现。”3月30日,“金蝶云——无限可能”全国巡展来到了北京,金蝶云事业部副总经理韩革缨在主题演讲中说。韩革缨接受中国软件网记者的采访韩革缨在随后接受记者采
频繁select一张表是否会造成锁表?是否有一个频率的临界点?
频繁select一张表是否会造成锁表?是否有一个频率的临界点?rnrn最近发现select一张分区表时,可能频率太快,造成部分分区访问超慢,谁能解释一下原因?谢谢
4_kicad 5.0_spice仿真器(AC,直流切换,失真,噪声,操作点,临界点,灵敏度,传递函数,瞬态,自定义)...
未完待续 spice仿真器 1_AC AC 2_直流切换 直流切换 3_失真 失真 4_噪声 噪声 5_操作点 操作点 6_临界点 临界点 7_灵敏度 灵敏度 8_传递函数 传递函数 9_瞬态 瞬态 10_自定义 ...
急~~SQL Server2005 锁升级的临界点分析 请高手们帮我分析一下,谢谢!
急~~SQL Server2005 锁升级的临界点分析 请高手们帮我分析一下,谢谢!rnrn最好有详细的讲解分析!谢谢啦!
考试系统定时提交表单,时间到达临界点时出现问题!!!!! 问过无数人,现在已是千古之谜了!!
我做了一个考试系统,通过定时提交表单,强制提交答卷,都是通过js处理的! 在时间未到之前,如果点击提交按钮,则会提示你的题还没答完,不能提交。这也是用js来实现的。但当我在时间还剩下1秒的时候点击提交按钮时,他会弹出不让提交对话框。然后点击确定,此时1秒早已过去,可是画面还是不提交,你要等好几秒它才会走完那一秒钟,而且当你点击页面(表示还可以做题),有时候能做一个题,点的快了还能做好几个题。rnrn帮忙看看我的js代码,rnrnwindow.setTimeout("Timer()",wait);// wait为时间 这是放在了onload事件中执行 rn//timer()方法rnfunction Timer() rn rn document.Form1.btnSubmit.click();rn rnrn//这是放在提交按钮的onclick事件里的 rnfunction writeall()rnrn if(xxx.text="")rn rn alert('不可为空’);rn return false;rn rnrnrn我用的是asp.net技术rn提交按钮的后台click事件里处理的就是将页面内容插入到数据库中
伪人工智能即将步入爆发临界点,智慧家庭能让它落地吗?
在人工智能成为全球IT巨头最新角斗场的今天,家电行业也掀起了人工智能的热潮,几乎所有的家电厂商都立足“Smart Home”,将人工智能和智慧家庭更紧密的结合在一起。然而,厂商的蜂拥并不代表产业已经成熟,在人工智能这条路上,家电厂商仍在摸索中前行。尽管初期人工智能家电的用户体验很难做到完美,但通过不断的更新迭代,2017年人工智能在家庭中的应用有望走向爆发的临界点。
中国微生物组计划—农作物微生物组:跨越转化临界点的现代生物技术
农作物微生物组:跨越转化临界点的现代生物技术白 洋1** 钱景美1 周俭民1 钱 韦2** 1 中国科学院遗传与发育生物学研究所 北京 100101 2 中国科学院微生物研究所 北京 100101摘要在微生物组技术体系中,农作物微生物组具有较好的研究基础和广阔的应用前景,已经处于从基础研究成果向田间应用转化的关键时期。目前,该领域在农作物-微生物组-土壤环境
LM393 电压比较的临界点精度要怎么处理(锂电池充电电路)
电路图在下面,先说说大致情况。目标是做一个锂电池循环充电的电路。大家都知道锂电池充满之后不能一直插在电源上面,但是用来做备用电池的时候又必须随时处于供电状态,平时不能断开连接,所以想设计一个电路,在电源低于11.7V的时候充电,充电满12V的时候断电。设计方案是TL431生成2个基准电压, 一个LM393电压比较电路,输出到4011组成的RS触发器上面。rn我现在碰到的问题是电池的输出电压和基准电压差大于0.2V左右都能正常输出,但是电池电压非常接近基准电压的时候,LM393输出的是一个线性电压,比如从高电压要过度到低电压的时候理论上是在临界点跳转,但实际是慢慢的从12V~11V~8V~1.? V 最后才接近0V。我用的是国产芯片,不过我看LM393的文档,上面说精度有2mv左右,我这都200mv了,是差距有这么大吗? 0.2V对于充电来说看起来影响不是特别大,但是因为输出电压达不到0.5V或者11.5V(就是4011输入的高电平,低电平临界点)这就导致了RS触发器的工作异常,RS触发器也不能正确的输出0V或者12V了,输出了1.5~11.5V,这1.5~11.5v的中间电压(我是用12V的电源)因为要促发三极管或者mos管来控制电路通断,三极管的放大功能让这个误差变得更大了,于是不能有效的控制通断,并且因为导通截止不彻底还导致了充电的压降很大,结果就是一塌糊涂了。rnrn不知道有没有什么好的办法可以实现 自动充电,放电,再充电的循环电路?rn这里先谢谢各位了rnrnrn[img=https://img-bbs.csdn.net/upload/201506/19/1434727002_614579.png][/img]
一个问题+一个问题=两个问题
第一,我的是sql server2008 ,有没一种工具,就是在我在输入语句时,后面自动提示,rn例:sel 后面自动出ect ,就是你打个开头,后面,自动列出匹配值。rnrn第二,拿到一个数据库后,我想分析一个里面各个表之间的,关联关系,就好象一个流程图一样的。rn 如果能分析出这个表是有什么功能,就更好了。不知有没有这个软件。
问题、问题、一个问题。。。。。
想做这么一个东东。rnrn就像记事本一样打文本,但还要能把图层放到上面,还要有滚动条。rn有点像HTML里用的 。。。。rn用什么方法比较好。
一个程序和一个问题
public class Polymorphism2 rnrn public static void main(String[] args) rn A ref1 = new C();rn B ref2 =(B) ref1;rn System.out.println(ref2.g());rn rnrn class A rn private int f() return 0;rn public int g() return 3;rn rn class B extends A rn private int f() return 1;rn public int g() return f();rn rn class C extends B rn public int f() return 2;rn rn结果是1,为什么我觉得是2?rn还有就是静态方法的隐藏和普通方法的覆盖有什么区别?
一个问题和一个建议
问题:rn 导出execl的合并单元格不识别的功能和合并列拖动第一列文字消失的功能修改的rn 如何??rn建议:rn 更新的版本下载包可附带一个TXT,对本次修改的功能做一个简要介绍.
一个问题+一个挑战
rn
一个问题,一个求助
1。请问 Linux ISO 文件:shrike-SRPMS-disc 和 shrike-i386-disc 的区别。rnrn2。我想全面的学习一下 FVWM ,那位高手能提供些建议或者资料和书籍?
★★★★★ 菜鸟问题一个! ★★★★★ 菜鸟问题一个! ★★★★★ 菜鸟问题一个! ★★★★★
rn各位大哥,大姐,大姨,二姑,三婶,四伯... rn 小弟在这里先拜年了 ^___________^rnrnrnrn红包 就不要,只是想请教各位高人一个问题:rnrn 请看如下语句:rn Form1->Caption = "new caption";rnrn小弟的疑问是,为什么这个语句可以“立即”改变窗口的标题呢?rnrn按小弟的理解,“等号”只是“赋值”,如果要改变“窗口”标题,应该要调用SetWindowText的?rnrn为什么Caption这个“变量”改变后,窗口标题也立即改变呢?变量的改变如何触发调用SetWindowTextrnrn的呢?rnrnrnrnrn^________________________________________________________________^rnrn不懂不要乱说哦~ rnrn
一个庆贺一个问题
1.庆贺。呵呵我的账号找回来了,按照各位热心大牛的办法,我尝试重新申请邮箱而成功找回本论坛账号。rn////////////////////////////////////////////////////////////////////////////////////////////////rn2.问题。一直都是生成一个文件夹,里面包含.exe文件以及相应的DLL或其他的VCL包,这里我就有个问题了,能否将程序全部打包到.exe里面去,当给一个没有安装CB的机子上运行时,只要给对方发个.exe可执行程序就OK了,就像MFC一样,不知道可否实现呢?在网上找了下资料,但是没有我要的答案
一个不算问题的问题
[code=C/C++]#includern#includernusing namespace std;rnrntemplate rnclass Nodern public:rn Elem data;rn Node *next;rn Node(const Elem &elemvel,Node * nextval = NULL)//在提供1-2个参数的情况下rn data = elemvel;next = nextval;rn Node(Node * nextval = NULL)//在不提供参数的情况下rn next = nextval;rn;rnrntemplaternclass Listrn Node* head;//头结点rn Node* tail;//尾结点rn Node* temp;//临时结点rn int leng;rn void init()//初始化链表rn head = tail = new Node(0);rn leng = 0;rn rn void removeall()//删除链表rn while(head)rn temp = head;rn head = head->next;rn delete temp;rn rn leng = 0;rn rn public:rn List()init();//构造rn ~List()removeall();//析构rn bool DestrayNode(const Elem);//删除一个结点rn void CreatNode(const Elem item)//创建一个新结点rn tail = tail->next = new Node(item);rn leng++;rn rn void PutList()//输出链表rn for(temp = head->next;temp != NULL; temp = temp->next)rn cout<data<<' ';rn rn int GetLeng()constreturn leng;//取链表的长度rn Elem GetNode(const int count);//取一个结点的值rn bool Lineinsert(const int count,const int value);//在count后插入一个结点rn;rnrntemplaternbool List::DestrayNode(const Elem item)//删除一个结点rn if(item <=0 || item > leng)rn return false;rn else if(item == leng)rn temp = head->next;rn while(temp->next != tail)rn temp = temp->next;rn tail = temp;rn temp = temp->next;rn delete temp;rn rn elsern temp = head;rn for(int i = 1; i < item;i++)rn temp = temp->next;rn Node *pNode;rn pNode = temp->next;rn temp->next = pNode->next;rn delete pNode;rn rn leng--;rn return true;rnrnrntemplaternElem List::GetNode(const int count)//取一个结点的值rn if(count >= 1 && count <= leng)rn temp = head->next;rn for(int i = 1; i < count; i++)rn temp = temp->next;rn return temp->data;rnrnrntemplaternbool List::Lineinsert(const int count,const int value)//增加一个结点rn if(count <= 0 || count > leng)rn return false;rn temp = head;rn for(int i = 1; i < count; i++)rn temp = temp->next;rn temp->next = new Node(value,temp->next);rn leng++;rn return true;rnrnrnint main()rnrn List l;rn srand((unsigned)time(NULL));rn for(int i = 0; i < 10; i++)rn l.CreatNode(rand()%100);rn l.PutList();rn return 0;rn[/code]rnrnrn代码本身无问题 问题是在编译的时候rn比如说我在main函数中申请了个对象lrn在调用函数的时候在编译器中输入"l."后面就会跟着出现类中所有的函数跟参数rn我奇怪的是这段代码写完之后 输入"l."竟然发现少了3个函数 并且这3个函数都是在类外面定义的在类中定义的会自动弹出rn为什么在类外定义的小时了???
一个不是问题的问题.
大家好,我刚开始学数据库,ACESS,有个问题我不明白 ,设定主键和不设定主键有什么区别吗?对ASP程序有什么影响呢?rn如果我要学SQL语言,哪本书好一点>网上哪里可以下载这样的手册和教程.rn希望大家帮帮我
一个不是问题的问题?
怎么在同一个程序中使用两个库?rnrn#includern#includernmain()rnrn cout<<"now use iostream\n";rn printf("and stdio\n");rnrnrn谢谢rnrnrnrn
一个问题,Global.asax.cs的问题
分析器错误 rn说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 rnrn分析器错误信息: 未能加载类型“zhang.Global”。rnrn源错误: rnrnrn行 1: <%@ Application Codebehind="Global.asax.cs" Inherits="zhang.Global" %>rn rn////rn这个怎么解决?rn
问题 - 很急的一个问题
我写的一个查询系统要刻到光盘里去,请各位大虾帮我解决,我想让光盘里的东西都不能拷贝到电脑里,有没有办法请大家帮我解决,急。rnrnrn我写的一个查询系统要刻到光盘里去,我想让我自己的程序只能用一年,有什么办法。rnrn需要说明的是,即使到了时间,用户修改电脑日期还是不能运行程序,换到任何机器上还是不能运行,反正到了时间就是不能在运行了
一个问题。UPDATE的问题
现在有一个Access的数据表:IpAddressrn字段1为ip1,值形式为:255.255.255.0rn字段2为ip2,值形式为:111.111.222.100rnrn共有记录N条 //请注意是有N条...rnrn怎样将里面的值UPDATE成:rnip1: 2552552550rnip2: 111111222100rnrnUPDATE语句要怎样写呀?rnrnrn
问题 有一个问题
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n。注意,n很大,尽量使用优化的算法。rnrn
问题一个基础问题?
IE与TOMCAT(在80端口侦听)连接时,是通过TCP/IP的socket来完成连结的,对吧?rn那么IE在客户端打开的Socket的端口是多少呢?80吗?为什么?
关于一个问题的问题
我的问题为什么总是被删除?
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview