NTUE-CS102 板


LINE

hmmmm 我没朋友,也开不起玩笑。 -- 延续插排的概念...作业五的构成 脑袋还没空掉的话,链结可以当成是一套随时变动长度的阵列 在基本盘来说,能用链结串列来做插排确实会比用阵列来得符合概念 只是实做上复杂性比较高一点,建立过程问题比较多,昨天抓个首项bug玩掉一小时(倒 好...再来先做个接下来用的表格说明 正确的长度会随着说明一个一个冒出来,这里先当做做出十个了 ┌—┬—┬—┬—┬—┬—┬—┬—┬—┬—┐ |0|1|2|3|4|5|6|7|8|9| ←建立顺、ID,两者相同 ├—┼—┼—┼—┼—┼—┼—┼—┼—┼—┤ |0|1|2|3|4|5|6|7|8|9| ←串列内顺序 ├—┼—┼—┼—┼—┼—┼—┼—┼—┼—┤ |1|1|2|4|6|8|9|10|80|99| ←分数内容 └—┴—┴—┴—┴—┴—┴—┴—┴—┴—┘ : 类别部分采前文用的名字、内容 -- 先来说明实作法,有其他概念再谈hmm 这边随意排几组 ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ |0| |3| |1| |2| |4| ├—┤ ├—┤ ├—┤ ├—┤ ├—┤ |0| |1| |2| |3| |4| ├—┤ ├—┤ ├—┤ ├—┤ ├—┤ |1| |3| |6| |8| |9| └—┘ └—┘ └—┘ └—┘ └—┘ 现在假设有第5个、4要插入,就沿着串列顺序去找大於4的那一个 确认是顺序在2的1比较大,就把5的指标指向1(顺序2)、3指向5 (5取代成为第2项、後面的跟着自动会往後退一个顺序) 变成是 -- 插入 ↓ ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ |0| |3| |5| |1| |2| |4| ├—┤ ├—┤ ├—┤ ├—┤ ├—┤ ├—┤ |0| |1| |2| |3| |4| |5| ├—┤ ├—┤ ├—┤ ├—┤ ├—┤ ├—┤ |1| |3| |4| |6| |8| |9| └—┘ └—┘ └—┘ └—┘ └—┘ └—┘ 我不想多挤一行写指向的下一项,所以就请稍微心领神会 每一个指向的下一项就看编号顺 -- 首先,在开始时是NULL,只建立几个aclass *p指标准备 或是你喜欢也能先new个位址给指标 我自己是试着整套用同个逻辑走,都放在回圈内生成 int main(){ aclass *p,*head,*tmp; } 这里三个指标,一个用来做运作(p),一个用来指示起始点(head) tmp主要用来记录前一项的位址,因为p一定会像前面例子跑到2,抓不到前一个1在哪 : 有另外建立前项指标的写法另论 再来进每次输入、生成的部份...因为无聊,所以写成跟阵列的范例一样没有最大上限 这里用while制作 刚进回圈,一样先不要管类别部份 我们就先接受id、grade後再研究要干嘛 while(true){ int id,grade; cin>>id >>grade; } -- 针对第一项输入没有前後、内容,当作一个特例处理,在while之前设一个bool标记第一次 其他就照常输入就好 bool start=true; while(true){ int id,grade; cin>>id >>grade; if (start){ start = false; p = head = new aclass; p->setid(id); p->setgrade(grade); p->setptr(NULL); } else{ } } 然後是之後开始输入的每一项,都在else内处理 -- 从第二项开始,因为都不确定应该插在哪 因此从头开始沿着串列比大小,把p跟tmp一起归零回到第一项 开始沿着过程比大小,找出从哪个地方开始比输入来得大 寻找要从哪里插入 else{ p=tmp=head; while (true) { if (grade < p->getgrade()) break; else { tmp=p; if (p->getptr()==NULL) break; p=p->getptr(); } } -- 因为每次都是确定p->getgrade()小於输入後tmp才变为p 一旦发现有比输入值来得大的,或是一路没有比输入值来得小的数值就跳出 所以整个回圏结束时,tmp的位置一定会刚好是要插入的前一项 : 这部份不懂就多画几次图,搞不懂来问我也无妨...我会看是谁决定怎样说明 知道要插在哪项之後就很简单... new个物件给p、把东西装装进去就是了 然後替换一下指标指向位址就好 p = new aclass; p->setid(id); p->setgrade(grade); p->setptr(tmp->getptr()); tmp->setptr(p); -- 就这样...插入结束後就把内容印出来看有没有问题 p=head; while (true){ cout <<p->getid() <<'\t' <<p->getgrade() <<'\n'; if (p->getptr()==NULL) break; p=p->getptr(); } 嗯...上面这样算写完八成左右 残余会出现一个bug,在第一项变成新的输入值时会出错 会插入到第二项,而不是第一项 为了这点,我是再针对这个特例做处理 在前面侦测要插入在哪的地方多加一点变数判断 -- 加个bool记录一下是不是第一项需要换 else{ p=tmp=head; bool first=true; while (true) { if (grade < p->getgrade()) break; else { first=false; tmp=p; if (p->getptr()==NULL) break; p=p->getptr(); } } -- 再来随着这个判断 将配置物件内指标指向的地方做一点修改 避免因为first判断让程式误认为只要是first都要摆到第一项前 在判断式确定应该在前或在後 p = new students; p->setid(id); p->setgrade(grade); if (first && grade<tmp->getgrade()) { p->setptr(tmp); head = p; } else { p->setptr(tmp->getptr()); tmp->setptr(p); } 这样就算完成....大概吧 -- 完整内容大概就这样 #include<iostream> using namespace std; class students{ public: int getid(); int getgrade(); students* getptr(); void setid(int ID); void setgrade(int GRADE); void setptr(students *PTR); private: int id; int grade; students *ptr; }; void students::setid(int ID){id=ID;}; void students::setgrade(int GRADE){grade=GRADE;}; void students::setptr(students *PTR){ptr=PTR;}; int students::getid(){return id;}; int students::getgrade(){return grade;}; students* students::getptr(){return ptr;}; int main() { students *p,*head,*tmp; bool start=true; while(true){ int id,grade; cin>>id >>grade; if (start){ p = head = new students; p->setid(id); p->setgrade(grade); p->setptr(NULL); start=false; } else{ p=tmp=head; bool first=true; while (true) { if (grade < p->getgrade()) break; else { first=false; tmp=p; if (p->getptr()==NULL) break; p=p->getptr(); } } p = new students; p->setid(id); p->setgrade(grade); if (first && grade<tmp->getgrade()) { p->setptr(tmp); head = p; } else { p->setptr(tmp->getptr()); tmp->setptr(p); } } p=head; while (true){ cout <<p->getid() <<'\t' <<p->getgrade() <<'\n'; if (p->getptr()==NULL) break; p=p->getptr(); } } } -- 所恐惧的,不是没有知识的大众  所憎恨的,不是深沉幽暗的人心 而是自以为是的思考之声 而是自恃甚高的执法者 所毁灭的,不是温馨和谐的世界 这是我最後的期许,没有愤怒、没有悔恨 而是自欺欺人的梦境 只剩下,浑沌的死亡呼吸                节自 新月神话-弑王者 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.76.199
1F:推 CaptainWill:凤狼干嘛这麽说... 03/18 00:48
2F:推 Arashinoon:害我突然很好奇到底是发生什麽事情= = 03/18 00:53
3F:推 ip3311:12~34 建立顺? 03/18 00:54
4F:→ ip3311: 行 03/18 00:54
5F:→ game0416:建立顺序...表示产生的顺序(输入顺序) 03/18 00:55
6F:推 yantchen:我的朋友 是凤娘(握 03/18 00:55
7F:推 CaptainWill:元品跳针= = 03/18 00:56
8F:推 Arashinoon:谁跳针=__= 不就是凤狼最近文章火药味很浓 03/18 00:57
9F:推 Arashinoon:我很好奇发生什麽事情霸了 03/18 00:57
10F:嘘 dosomethnig:我们是马吉耶!!! 马吉PO文 就是要推阿!! 03/18 00:57
11F:→ dosomethnig:准备怒吼了妈?? 没关系 你问小胖我睡觉都带耳塞 03/18 00:58
12F:推 suan710:看来当事者出面了.. 03/18 00:58
13F:→ dosomethnig:我们是马吉耶 03/18 00:59
14F:→ Arashinoon:所以到底是发生什麽大事可以让凤狼这麽生气?? 03/18 00:59
15F:→ Arashinoon:  ̄ ̄ 03/18 01:00
16F:→ suan710:请一哥说明: 03/18 01:00
17F:推 CaptainWill:一哥表示: 03/18 01:01
18F:嘘 dosomethnig:ㄜ...我按错了 我要按1推文的 03/18 01:01
19F:→ dosomethnig:误会一场 等我睡醒 再帮他推回来 03/18 01:01
20F:推 suan710:看来误会大罗 揪竟会怎麽样呢? 让我们继续看下去 03/18 01:03
21F:推 Arashinoon:说好的资科向心力呢 快GG了 03/18 01:05
22F:推 CaptainWill:一哥只是开玩笑,别认真 03/18 01:05
23F:推 Arashinoon:我帮一哥推回来一个 03/18 01:07
24F:→ CaptainWill:一哥表示 03/18 01:07
25F:→ s86186654418: 好像在看连载唷 03/18 01:14
26F:推 suan710: 什麽时候出下一集 03/18 01:15
27F:→ Arashinoon: 下集待续 03/18 01:16
28F:→ CaptainWill:你们这群顾吃鸡排不帮忙解决事情的人 囧 03/18 01:18
29F:→ Arashinoon:楼上别这样 我也有帮忙 03/18 01:18
30F:→ s86186654418:coming soon 03/18 01:21
31F:→ CaptainWill: 是说我想吃宵夜了... 03/18 01:23
32F:推 suan710:遗憾的是宿舍出不去派克又关了.. 03/18 01:25
33F:→ Arashinoon:看到上面的鸡排我肚子饿了 03/18 01:29
34F:→ CaptainWill:鸡排 珍奶 茄汁牛肉面 味噌拉面 麻辣锅 臭豆腐....... 03/18 01:30
35F:→ Arashinoon:干= = 03/18 01:30
36F:→ CaptainWill:干很饿.... 03/18 01:31
37F:→ CaptainWill:http://tinyurl.com/yb4ozhx 03/18 01:36
38F:→ Arashinoon:干 楼上恐怖连结都不用说的喔 03/18 01:37
39F:→ CaptainWill:说了你会点?! 03/18 01:37
40F:→ CaptainWill:http://tinyurl.com/ydc65nf 干...真的受不了 03/18 01:38
41F:→ Genya0:呵呵呵 03/18 01:40
42F:→ CaptainWill:呵呵 03/18 01:41
43F:→ Arashinoon:我没存粮了 好饿.... 03/18 01:41
44F:→ CaptainWill:http://tinyurl.com/ybusxy4 阿辣试试这个 03/18 01:42
45F:→ Arashinoon:草尼马的鱿鱼+美乃滋 03/18 01:42
46F:推 suan710:存粮大拍卖!! 03/18 01:43
47F:→ Arashinoon:楼上有啥 说来听听 干还是算了 会更饿 03/18 01:43
48F:推 pk873: ╴╴╴╴ ▌ 03/18 01:44
49F:→ pk873: /∵ ∴ ∵\ \ ̄ ̄ ̄ ̄ ̄ ̄/ 03/18 01:44
50F:→ pk873: /∴ ∵ ∴ ∵ \ \ / 03/18 01:44
51F:→ pk873: ███████▋ \ / 03/18 01:44
52F:→ pk873: \ ∴ ∵ ∴ ∵/ \ / 03/18 01:44
53F:→ pk873: \∵ ∴ ∵/ \____/ 03/18 01:44
54F:→ pk873:  ̄ ̄ ̄ ̄ 03/18 01:44
55F:→ pk873:头痛...睡觉去... 03/18 01:44
56F:→ suan710:泡面X N 糖果 口粮 应有尽有喔 揪咪 03/18 01:45
57F:→ CaptainWill:http://tinyurl.com/y9bnmpg 这张史上最恐怖(无胆勿试 03/18 01:45
58F:→ suan710:算了真的要睡了...8点记得叫我 03/18 01:46
59F:→ CaptainWill:这样睡得着吗 阿辣? 03/18 01:46
60F:→ Arashinoon:阿花洗个澡?? 还是洗过了 03/18 01:46
61F:→ CaptainWill:我下午从阳明山观光回来的时候洗过了-ˇ- 03/18 01:47
62F:→ CaptainWill:我要用睡眠来克服肌饿了...掰 03/18 01:49
63F:→ Arashinoon:掰... 03/18 01:51
64F:→ CaptainWill: (讲得自己很像难民= = 03/18 01:53
65F:推 pig456654: ◢████████████◤▏ 03/18 10:30
66F:→ pig456654: ◢◤____◢◤____◢◤____◢◤╱ 03/18 10:30
67F:→ pig456654: ◢◤╱ ◢◤╱ ◢◤╱ ◢◤╱ 03/18 10:30
68F:→ pig456654: ◢████◤╱ ◢████◤╱ 03/18 10:30
69F:→ pig456654: ◢◤▏ ▕╱ ▕______◢◤╱ 03/18 10:30
70F:→ pig456654: ◢◤╱ ̄ ̄ ̄ ̄ ◢◤╱ 03/18 10:30
71F:→ pig456654: ◢◤╱ ◢████◤▏ ◢◤╱ 03/18 10:30
72F:→ pig456654: ◢◤╱ ◢◤____◢◤╱ ◢◤╱ 03/18 10:30
73F:→ pig456654: ◢◤╱ ◢◤╱ ◢◤╱ ◢◤╱ 03/18 10:30
74F:→ pig456654:◢████████████◤╱ 03/18 10:30
75F:→ pig456654:▏ ▕╱ 03/18 10:30
76F:→ pig456654: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 03/18 10:30
小修个BUG ※ 编辑: game0416 来自: 120.127.47.93 (03/22 10:15)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP