• 20172318 2018-2019-1 《程序设计与数据结构》第3周学习总结


    20172318 2018-2019-1 《程序设计与数据结构》第3周学习总结

    教材学习内容总结

    队列

    • 概述

      • 队列是一种线性集合,其元素从一端加入,从另一端删除
      • 队列的元素是按FIFO方式处理的。第一个进入的元素,也就是第一个退出的元素
    • 用链表实现队列

      • 除了一个指向链表首元素的引用(称为head)之外,还需要跟踪另一个指向链表末元素的引用(称为tail),还要用一个整型变量count来跟踪队列中的元素数目。

      • 如果是往链表前端添加新结点,那么就把该新结点的next指针设置为指向链表的head变量,把head变量设置为指向新结点。如果是往链表的末端添加新结点,那么就把链表末端结点的next指针设置为指向新结点,然后把链表的tail设置为指向新结点。

      • 链表实现队列的其他操作相当简单,它们类似于栈的相应操作。只要返回一个指向队列前端元素的引用即可实现first操作。当元素数目为0时isEmpty操作返回true,否则返回falseosize操作只要返回队列中的元素数目即可。

    • 用数组实现队列

      • 基于数组的队列实现策略就是将队列的某一端(比如前端)固定在数组的索引0处。所有元素会不间断地存放在数组中。

      • 与ArrayStack实现中的top变量类似,整型变量rear用于表明数组中的下一个空闲单元。注意,rear还表示了队列中的元素数目。

      • 由于队列操作会修改集合的两端,因此将一端固定于索引0处要求移动元素。

      • 把数组看作是环形的,可以除去在队列的数组实现中把元素移位的需要·

    教材学习中的问题和解决过程

    这周内容和上周差不多 在队列的理解和实现没遇到什么困难,具体的问题也只有双向队列的实现问题,解决方案已在下文给出

    代码调试中的问题和解决过程

     public void addFirst(Item item) {
            if (item == null)
                throw new NullPointerException("can't add null element!");
            Node first = new Node();
            first.item = item;
            first.prev = nil;
            first.next = nil.next;
            nil.next.prev = first;
            nil.next = first;
            n++;
        }
    
        public void addLast(Item item) {
            if (item == null)
                throw new NullPointerException("can't add null element!");
            Node last = new Node();
            last.item = item;
            last.next = nil;
            last.prev = nil.prev;
            nil.prev.next = last;
            nil.prev = last;
            n++;
        }
    
        public Item removeFirst() {
            if (isEmpty())
                throw new NoSuchElementException("Can't remove from empty deque");
            Node del = nil.next;
            Item item = del.item;
            del.next.prev = nil;
            nil.next = del.next;
            n--;
            return item;
        }
    
        public Item removeLast() {
            if (isEmpty()) throw new NoSuchElementException("Stack underflow");
            Node del = nil.prev;
            Item item = del.item;
            del.prev.next = nil;
            nil.prev = del.prev;
            n--;
            return item;
        }
    

    上周考试错题总结

    上周没有进行测试,所以没有错题总结

    代码托管

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172312
      • 结对学习内容
        • 课本第五章

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 8/8
    第二周 500/500 1/2 15/ 23
    第五周 802/1302 1/3 12/35

    参考资料

  • 相关阅读:
    win10开机自启脚本
    centos7安装redis
    oracle安装
    Python进程和线程实例详解
    sonar+postgresql
    centos7更换下载源
    Python强大的日志模块logging
    centos7切换图形界面
    centos7安装mysql5.7
    Python正则表达式大全
  • 原文地址:https://www.cnblogs.com/m1sty/p/9707213.html
Copyright © 2020-2023  润新知