查看: 429|回复: 3
收起左侧

请问 CS61B proj 1A 的code有人能分享一下或者点拨一下吗?加米

|只看干货
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
公开课
学校名称: ucb
Unit号: 1
开课时间: 2018-02-01
课程全名: 61b
平台: 其他
URL: http://cs61b.org

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

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

x
本帖最后由 VancouverTek 于 2021-6-25 00:11 编辑

RT,18spring的proj 1A,就是用链表或数组实现列表的那个proj。。折腾很久拿不到满分,打算对答案了,但是网上的code都不知道是不是标准答案,请问这里有哪位做过这项目的能分享一下正确的code吗?感谢,加米!

补充一下,主要是两个remove方法和get有点搞不定,其他的个人觉得没啥问题。
要是贴不了code,请哪位讲下思路也可以,鄙人对nextFirst,nextLast这两个指针的初始位置应该放哪里,以及用addLast添加elements再用removeFirst移除,或者反过来的操作都有点搞不定


上一篇:请教一道关于min-cut的题
下一篇:Udemy每日免费课程汇总
Perserverance 2021-6-25 03:06:09 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (39)
 
 
0% (0)    👎
本帖最后由 Perserverance 于 2021-6-25 03:11 编辑

    public T removeFirst() {        IntNode old = sentinel.next;
        sentinel.next = sentinel.next.next;
        sentinel.next.prev = sentinel;
        if (size > 0) {
            size -= 1;
        }
        return old.item;
    }

    public T removeLast() {
        IntNode old = sentinel.prev;
        sentinel.prev = sentinel.prev.prev;
        sentinel.prev.next = sentinel;
        if (size > 0) {
            size -= 1;
        }
        return old.item;
    }

    public T get(int index) {
        IntNode curr = sentinel;
        while (index > 0) {
            curr = curr.next;
            index -= 1;
        }
        return curr.next.item;
    }
回复

使用道具 举报

 楼主| VancouverTek 2021-6-25 09:54:23 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
Perserverance 发表于 2021-6-25 03:06
public T removeFirst() {        IntNode old = sentinel.next;
        sentinel.next = sentinel.n ...

你好,谢谢,请问ArrayDeque部分的code有嘛?
回复

使用道具 举报

Perserverance 2021-6-25 23:22:53 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (39)
 
 
0% (0)    👎
VancouverTek 发表于 2021-6-25 09:54
你好,谢谢,请问ArrayDeque部分的code有嘛?

    public T removeFirst() {
        if (size > 0) {
            if ((float) size / items.length < 0.25) {
                resizedown(items.length / 2);
            }
            nfirst = plusOne(nfirst);
            size -= 1;
            return items[nfirst];
        }
        return null;
    }

    public T removeLast() {
        if (size > 0) {
            if ((float) size / items.length < 0.25) {
                resizedown(items.length / 2);
            }
            nlast = minusOne(nlast);
            if (size > 0) {
                size -= 1;
            }
            return items[nlast];
        }
        return null;
    }

    public T get(int index) {
        int p = plusOne(nfirst);
        while (index > 0) {
            p = plusOne(p);
            index = index - 1;
        }
        if (items[p] == null) {
            return null;
        }
        return items[p];
    }

评分

参与人数 1大米 +1 收起 理由
VancouverTek + 1 欢迎分享你知道的情况,会给更多积分奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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