楼主: jaly50
跳转到指定楼层
上一主题 下一主题
收起左侧

Berkeley CS 61B Data Structures(in Java) Lab3 讨论帖

 
🔗
mmyn 2017-5-1 16:05:27 | 只看该作者
全局:
Lab确实比Homework要简单一些,不过有一些细节还是值得注意以下的~~~
回复

使用道具 举报

🔗
SJTed 2017-5-2 15:06:34 | 只看该作者
本楼:
全局:
打卡一下。。。。。。

屏幕快照 2017-05-02 下午3.05.20.png (112.67 KB, 下载次数: 2)

屏幕快照 2017-05-02 下午3.05.20.png
回复

使用道具 举报

🔗
布瓜小白 2017-5-10 19:35:21 | 只看该作者
全局:
本帖最后由 布瓜小白 于 2017-5-10 21:53 编辑
zh 发表于 2017-4-16 09:58
呀我重新试了试,真的成功了,太感谢了,我在研究一下是哪里出问题了。

我的理解,这么构造的话:
  head创建出3个slistnode objects。
   而tail指针指向一个新建立的SListNode object,而不是指向上述序列中的最后一个SListNode。
也就是说,head和tail指向的不是同一个链表里的slistnode.
  此时要调出s1的时候,只会打印出head指向的SlistNode。。。


解决办法:创建空的slist,逐次加入item,head就会指向该链表的第一个,tail就会指向该链表的最后一个。

但是tail指的slistnode去哪里了??。。。这里就不知道了。。。

回复

使用道具 举报

🔗
布瓜小白 2017-5-10 21:46:24 | 只看该作者
全局:
本帖最后由 布瓜小白 于 2017-5-10 21:54 编辑

理解链表理解得天荒地老,画了几遍图终于明白了……
看到大家都说简单……要哭了……

打卡笔记+问题。

1. 如果按照s1这样建立SList, 执行insertend(15)后没有加上15。
   public static void main (String[] args) {
    SList s1=new SList();   
    s1.head=new SListNode(6,new SListNode(9,new SListNode(12)));
    s1.tail=new SListNode(12);
   }
head创建出3个slistnode objects。
   而tail指针指向一个新建立的SListNode object,而不是指向上述序列中的最后一个SListNode。
也就是说,head和tail指向的不是同一个链表里的slistnode.  此时要调出s1的时候,只会打印出head指向的SlistNode。。。


解决办法:创建空的slist,逐次加入item,head就会指向该链表的第一个,tail就会指向该链表的最后一个。

但是tail指的slistnode去哪里了??。。。这里就不知道了。。。

2. 没有在insertFront()中增加tail=null时,有个Thread.dumpStack()的错误,不知道啥意思;
   其实一开始不太理解为什么要加tail==null的条件, head==null不就意味着是空链表吗。
   后来想,虽然我知道,可是java不知道,所以我要分别讨论:head==null就是tail==null; tail==null也就是head==null.
   画图之后发现,因为slist里增加了tail这个field,初始值是Null, 要增加一个slistnode,tail的初始值肯定要更改,要不然inserfront完了还是Null。   

3. 第二题关键点:增加一个节点tail,tail的指针始终指向新增的slistnode。
   这里的head和tail分别指向首尾两个SListNode.






lab3.PNG (26.62 KB, 下载次数: 2)

lab3.PNG
回复

使用道具 举报

🔗
-kiki- 2017-5-12 00:02:26 | 只看该作者
本楼:
全局:
打卡~~~

Lab 3.png (20.17 KB, 下载次数: 2)

Lab 3.png
回复

使用道具 举报

🔗
liniua 2017-5-14 05:45:26 | 只看该作者
全局:

[  6  9  12  ]
[  6  9  12  15  ]

Here is a list after construction: [  ]
isEmpty() should be true. It is: true
length() should be 0. It is: 0
Here is a list after insertFront(3) to an empty list: [  3  ]
Here is a list after insertEnd(5) on an empty list: [  5  ]

Here is a list after insertFront 3, 2, 1: [  1  2  3  ]
isEmpty() should be false. It is: false
length() should be 3. It is: 3
Here is the same list after insertEnd(4): [  1  2  3  4  ]

Here is a list after insertEnd 6, 7: [  6  7  ]
isEmpty() should be false. It is: false
length() should be 2. It is: 2
Here is the same list after insertFront(5): [  5  6  7  ]

Process finished with exit code 0
回复

使用道具 举报

🔗
arieslpx 2017-5-18 15:21:24 | 只看该作者
全局:
zh 发表于 2017-4-16 07:58
我当时说错了,我想说我在constructor里面定义tail的时候。我贴一下代码吧~下面这个是插入的方法。但是我 ...

层主 想问一下就是问什么你代码这里要写tail.next=new SListNode(obj)啊
就是构造函数中只有obj那不就是说prev和next都为null么 不应该是现在插入的这个obj的prev是tail嘛
但是我那句写的tail=new SListNode(obj,null,tail)就提示出错时为什么啊~

IMG_3556.PNG (51.54 KB, 下载次数: 1)

IMG_3556.PNG
回复

使用道具 举报

🔗
arieslpx 2017-5-18 17:55:21 | 只看该作者
全局:
几经波折终于做完了,,,Part1没什么 但是Part2 主要就是以为要构造一个doubly Linked List ,用prev和next

实际上不需要,还是使用singly Linked List,同时需要注意的是考虑head==null的情况

LAB2.png (12.79 KB, 下载次数: 0)

LAB2.png
回复

使用道具 举报

🔗
charlescheng 2017-6-8 14:51:36 | 只看该作者
本楼:
全局:
本帖最后由 charlescheng 于 2017-6-8 15:05 编辑

Lab3 打卡


Lab3.jpg (41.34 KB, 下载次数: 4)

lab3

lab3
回复

使用道具 举报

🔗
ZHR 2017-6-8 19:54:59 | 只看该作者
全局:
C:\Users\Administrator\Desktop
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表