查看: 39923| 回复: 201
跳转到指定楼层
上一主题 下一主题
收起左侧

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

 
全局:
公开课
学校名称: Berkeley
Unit号: 1
开课时间: 2014-05-30
课程全名: CS 61B Data Structures(in Java)
平台: 其他

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 jaly50 于 2014-5-31 11:41 编辑

lab3 和lab4都是看完第八课 链表 就可以写的
实验室里要求2个小时完成的,所以都比较简单
作业链接:http://www.cs.berkeley.edu/~jrs/61b/lab/lab3/

lab就不加分了

大家还是可以上传作业 mark一下自己做过了
或者做作业有什么问题
可在此帖讨论





相关链接:      

       【公开课讨论+加分总贴】:UC Berkeley CS 61B Data Structures(in Java)
       【课程网站】: 【spring2014】【fall2006
       【视频网站】:【Youtube(fall2006)】【Youtube(spring2014)】【Youku(fall 2006)】

        【教材】:Head First Java 【中文版】【英文版
                      Data Structures and Algorithms in Java, 5th Edition. 【英文版

评分

参与人数 1大米 +3 收起 理由
小小溪 + 3 感谢分享!

查看全部评分


上一篇:Berkeley CS 61B Data Structures(in Java) Lab4 讨论帖
下一篇:[Coursera]程序设计实习 / Practice on Programming (week13) 加分&讨论帖
推荐
wynnforce 2015-5-14 22:01:43 | 只看该作者
全局:
先贴图:



题目意思好绕,constant time就好了,后面说了一堆record, representation之类的, 感觉不如直接说keep track of the tail。。。
要改的三个是:加一个instance variable (tail),insertFront(),  insertEnd();

人认为有两种实现带tail的linkedlist的思路:
1. head和tail指向的都是首末的有意义的node:
    优点:代码简洁,节约了两个node;
    缺点:insertFront()和insertEnd()里都要把tail==0拎出来单独讨论;
2. head和tail分别指的首末的无意义的(不存item)node,专门作首尾节点:
    优点:是课堂上讲的标准linkedlist结构
    缺点:代码稍微复杂一点,又因为是单向linkedlist,没有prev,所以尾node的next要往回指,容易弄错。。(事实上1中的node本身也是往回指的。。)

贴一下1的代码:
  1. public void insertFront(Object obj) {
  2.   head = new SListNode(obj, head);
  3.   if (tail == null){
  4.     tail = head;
  5.   }
  6.   size++;
  7. }

  8. public void insertEnd(Object obj) {
  9.   if (tail==null){
  10.     insertFront(obj);
  11.   } else {
  12.     tail.next = new SListNode(obj, null);
  13.     tail = tail.next;
  14.     size++;
  15.   }
  16. }
复制代码
2的代码就是把一些head和tail改成head.next和tail.next,然后不用分情况讨论了,略了;




回复

使用道具 举报

推荐
zhuyingcau 2016-7-7 16:23:42 | 只看该作者
全局:
LAB3

第一个问题还ok ~

小小总结一下第二个问题:

insertEnd函数是增加了一个尾指针tail。

在insertFront函数中特别注意,当空链表插入第一个节点时,tail也得指向这个节点。

中途糊涂了,以为是最后一个节点指向tail呢,其实tail只是一个变量名,而不是节点,tail所指向的内容才是节点。




回复

使用道具 举报

全局:
第一次忘了在insertFront()里面添加tail == null的情况,应该想到对称性的。

Screen Shot 2016-03-24 at 8.00.20 PM.png (148.25 KB, 下载次数: 13)

Screen Shot 2016-03-24 at 8.00.20 PM.png
回复

使用道具 举报

🔗
m32jo4 2014-5-31 11:08:09 | 只看该作者
全局:
there is something wrong with youtube link?

点评

谢谢提醒,链接已更新。https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C  发表于 2014-5-31 11:35
回复

使用道具 举报

🔗
朝仓音梦 2014-6-3 01:48:46 | 只看该作者
全局:
本帖最后由 朝仓音梦 于 2014-6-3 01:51 编辑

老师讲的
public void removeBack(){
head.prev=head.prev.prev;
head.prev.next=head;
size--;
}
没有错误吗?第三句 head.prev.next不是本来就是head?
觉得应该是
head.prev.prev.next=head;

评分

参与人数 1大米 +1 收起 理由
嘟嘟的机器人 + 1 我也感觉是呢

查看全部评分

回复

使用道具 举报

🔗
Musfanzy 2014-6-3 07:33:50 | 只看该作者
全局:
朝仓音梦 发表于 2014-6-3 01:48
老师讲的
public void removeBack(){
head.prev=head.prev.prev;

没有错误 因为已经把head.prev.prev 赋值给了 head.prev
第一句话是 从 后往前 建立链接
第二句话是 从 前往后 建立链接
回复

使用道具 举报

🔗
gloria_wwj 2014-6-12 22:48:20 | 只看该作者
全局:
字数字数字数字数!

Lab3.png (41.83 KB, 下载次数: 16)

Lab3.png
回复

使用道具 举报

🔗
galaxy2 2014-6-21 20:25:31 | 只看该作者
全局:
lab3.png
                                

lab3.png (72.49 KB, 下载次数: 14)

lab3.png
回复

使用道具 举报

全局:
insertEnd()方法的修改是不是添加一个结点时刻指向尾结点就可以了?
回复

使用道具 举报

🔗
ginrain 2014-6-28 23:44:46 | 只看该作者
全局:
回ls,
我是加了一个tail 然后在insertend和insertfront里做判断,为head == null时,tail = head = 新元素;当insertend不为null时候,把tail.next装上去,再更新tail;

QQ20140628-1.png (71.61 KB, 下载次数: 11)

QQ20140628-1.png
回复

使用道具 举报

🔗
dsqx71 2014-6-30 19:40:27 | 只看该作者
全局:
希望能坚持跟上。。。。。

QQ截图20140630193649.png (9.42 KB, 下载次数: 19)

lab3

lab3
回复

使用道具 举报

🔗
南方的狼 2014-8-9 16:38:19 | 只看该作者
全局:
晒一下答案~
回复

使用道具 举报

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

本版积分规则

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