C_Sharp 板


LINE

老师给了一段单向伫列的code,要改成双向伫列(其实也就是加上一个previous) 因为之前用C有写过类似的作业,用一样的逻辑写也没有bug 但是执行後却一直显示"并未将物件参考设定为物件的执行个体" 我只知道哪一段程式码出了问题,但不知道发生了甚麽事 下面附上我的code,希望版上大大不吝指教 谢谢 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StackNodeTest { class Program { static void Main(string[] args) { String taken; Stack s = new Stack(); ; Console.WriteLine("Stack START:(Enter Number, '#' to End)\n-----"); do { taken = Console.ReadLine(); if (taken != "#") { s.push(int.Parse(taken)); } } while (taken != "#"); do { int e; s.pop(out e); Console.WriteLine(e); } while (s.checktop()); Console.Read(); } } class Stack { private Node Top; private Node botton; public Stack() { this.Top = null; } public bool push(int x) { Node p=new Node(x,Top); this.Top.Setprevious(p);开发环境显示这一行有问题 if (this.Top == null) { this.Top =this.botton = p; } else { this.Top = p; } return true; } public bool pop(out int x) { x = Top.getdata(); this.Top = Top.getnext(); return true; } public bool popfrombotton(out int x) { x = botton.getdata(); this.botton = botton.getprevious(); return true; } public bool checktop() { return this.Top != null; } } class Node { private int data; private Node next; public Node previous; public Node(int x, Node next) { Setdata(x); Setnext(next); this.previous = null; } public void Setdata(int x) { this.data = x; } public void Setnext(Node next) { this.next = next; } public void Setprevious(Node previous) { this.previous = previous; } public int getdata() { return this.data; } public Node getnext() { return this.next; } public Node getprevious() { return this.previous; } } } --
1F:推 olduck:红豆生南国12/25 16:07
2F:推 newmatt: 春来发起痴12/25 16:56
3F:推 asdfzx: 愿插郭采洁12/25 17:34
4F:推 otakuwill: 耻物最香湿12/25 17:39
5F:推 a01000a:王摩诘-香湿12/25 18:10
6F:推 jpsstargazer:前几楼淫出好诗呀12/25 20:07
--



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 49.158.2.110
7F:→ luj810714:最後我用try-catch把那一行隔离後不管exception message 03/31 03:20
8F:→ luj810714:程式一样可以执行,但我还是希望可以了解问题发生原因@@ 03/31 03:20
9F:→ ssccg:因为this.Top一开始是null啊 03/31 04:22
10F:→ ssccg:就在那下面不就正有检查this.Top是不是null的code? 03/31 04:22
11F:→ ssccg:那一样使用this.Top的那行不也应该先确定是不是null? 03/31 04:26
12F:推 Eleganse:这样写当然可以 加个try-catch没啥问题 能跑就是正确程序 03/31 08:05
13F:→ Eleganse:但是类别stack的建构函数stack()中 程式塞了个null给它 03/31 08:06
14F:→ Eleganse:如果成员是null 程式还能正常跑不就活见鬼了 03/31 08:07
15F:→ Eleganse:当然当你作了第1次PUSH後 里面有值了 物件就开始正确运行 03/31 08:08
16F:→ Eleganse:因此try-catch程序ok 只在物件初始化时 进了1次catch而已 03/31 08:09
17F:→ Eleganse:不喜欢的话 那就把stack类别砍掉重练 03/31 08:11
18F:→ Eleganse:依你自已的逻辑重写 记得建构函数时要塞值进去 不要null 03/31 08:12
19F:→ Eleganse:然後我刚才突然想到 System.Collections里不是就有个 03/31 08:21
20F:→ Eleganse:stack类别...那干麻自已写啊 03/31 08:21
21F:→ luj810714:感谢!原来如此!!,但依我设计的逻辑是,当他POP时发现 03/31 21:18
22F:→ luj810714:Top是null时就跳出do-while回圈,那麽是否有其他替代方 03/31 21:19
23F:→ luj810714:案呢? 03/31 21:19
24F:→ ssccg:跟pop有什麽关系? 问题那行在push里面啊 04/01 00:41
25F:→ ssccg:把那行移到else里面,this.Top = p; 上面就好了 04/01 00:41
26F:→ ssccg:这明明是流程设计上有问题,因此加try-catch一点都不ok 04/01 00:42







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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP