• 20182330《程序设计与设计结构》 第八周学习总结


    20182330《程序设计与设计结构》 第八周学习总结

    教材学习内容总结

    周一:

    1. 链表实现栈
      data存放数据点
      next下一节点
      存储地址 数据域
      单链表:只含一个指针域的链表 a-》
      双向链表:<-a->
      地址不一定连续

    2. 尾插法
      Student temp = Head;
      while(temp.next!=null){
      temp=temp.next}
      temp.next=node;
      return head;
      用一个临时指针(不能影响头指针,头指针移动则垃圾回收)等于头指针temp=temp。next 若为null,找到了链表结尾,则指向新插入的对象

    3. 头插法:新对象指向首个元素,head指针赋给新对象,则新链表完成
      node.next=Head;
      Head =node;
      return Head;
      删除:

    4. temp.next=temp.next.next

    5. 两个指针,p.next=q.next
      循环链表
      双向链表
      栈与链表
      top即为head

    周五:队列

    1. 队列:只能在队头删除,队尾插入。先进先出(队列等连续存储结构可以随机存取,链表不可以,必须从第一个开始找)
    2. 方法:enqueue入队
      dequeue出队
      first=peek看第一个元素
      isEmpty是否为空
      size多少元素
    3. 定义结点
      LinerNode
      LinerNode front //队头指针
      LinerNoderear // 队尾指针
      int count//元素个数
      演示https://visualgo.net/en/list
    4. 线性表
      具有相同特性数据元素的有限序列
      栈队列是特殊的线性表
    5. 出队入队操作:
      为空时rear front都在1(不是指针),为空判定条件:(rearfront)也有可能队满!
      (1) 少用一个空间,判断(rear+1)%M=front
      (2) size
      (3)看上一步操作,确定是front导致的还是rear导致的)
      入队rear+1,q[rear++]=x;
      出队front+1,e=q[front++];
      假溢出:0 1 2 3 4 5 浪费空间
      (出队元素)
      解决:
      (1)依次固定
      (2) mod size,循环队列:把队列设想成环形,让队列设想成环形,让sq【0】接在sq【M-1】之后,即:若rear+1
      M, 则另rear=0,移动指针不能用i=i+1,而是i=(i+1)%MAX
      入队 sq【rear】=e;
      rear=(rear+1)%M
      出队e=sq

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

    • 问题1:老师在课堂上演示的代码经常有泛型,那么究竟什么是泛型??如何使用?
    • 问题1解决方案:书本和网上解决。
    • 首先我们要知道:使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。
    • 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?
    • 顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

    泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,
    操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

    用一个例子来说明:

    List arrayList = new ArrayList();
    arrayList.add("aaaa");
    arrayList.add(100);
    
    for(int i = 0; i< arrayList.size();i++){
        String item = (String)arrayList.get(i);
        Log.d("泛型测试","item = " + item);
    }
    
    

    毫无疑问,程序的运行结果会以崩溃结束:
    ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生。

    我们将第一行声明初始化list的代码更改一下,编译器会在编译阶段就能够帮我们发现类似这样的问题。

    List<String> arrayList = new ArrayList<String>();
    ...
    //arrayList.add(100); 在编译阶段,编译器就会报错
    
    • 问题2:“串行化”是什么意思
    • 问题2解决方案:串行化(Serialization)是计算机科学中的一个概念,它是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。之后可以通过反串行化从这些连续的字节(byte)数据重新构建一个与原始对象状态相同的对象,因此在特定情况下也可以说是得到一个副本,但并不是所有情况都这样。
    • 暂时就只能看懂这么多。
    • 问题3:学习队列时偶然看到了“消息队列”的字眼,那什么是消息队列?
    • 问题3解决方案:“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。
      消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

    通俗的解释就是程序产生内容->入队(生产者) ->出队(消费者)

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

    • 问题1:头插法出错

    • 问题1解决方案:头插法在返回时一定要返回新的链表头,这样才能实现头插,否则就像我一样一直陷入死循环,检查代码无误,单步调试也无误,费了九牛二虎之力才找到问题的所在。

    代码托管

    前几周忘了截图,这是截止第十周之前的代码,以后会记得按时截图,以下统计代码量按照总增量/3计算。

    上周考试错题总结

    上周无考试

    结对及互评

    点评过的同学博客和代码

    • 本周结对学习情况

      • 20182314
      • 点评:知识点总结的较为详细,但是代码的问题理解不深。
        基于评分标准,我给本博客打分:14分。得分情况如下:
        感想,体会不假大空的加1分
        排版精美的加一分
        结对学习情况真实可信的加1分
        正确使用Markdown语法
        模板中的要素齐全(加1分)
        错题学习深入的加1分
        点评认真,能指出博客和代码中的问题的加1分
        教材学习中的问题和解决过程, 加5分
        代码调试中的问题和解决过程,加2分
    • 上周博客互评情况

    其他(感悟、思考等,可选)

    学习内容加紧,在时间上很紧张,每天要熬夜才能完成各种学科的任务。希望能够调节好自己的时间,以最好的状态学习。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 10000行 30篇 400小时
    第一周 42/42 2/2 20/20
    第三周 394/471 2/4 25/45
    第四周 394/471 2/4 25/45
    第五周 1668/2139 2/6 35/80
    第六周 2388/4527 1/7 30/110
    第七周 1660 /6187 2/9 25/135
    第八周 1660/7847 2/11 20/130
    • 计划学习时间:25小时

    • 实际学习时间:20小时

    • 改进情况:希望提高效率

    参考资料

  • 相关阅读:
    英文、简繁体中文 IT 词汇对照表
    VB.NET 中的 As New 以及型別指定
    使用 ADO.NET 的 ExecuteScalar 方法返回单一值
    适时调整 SqlDataSource 控件的 DataSourceMode 属性
    ADO.NET 2.0 的并行控制与数据存取冲突侦测
    让 ADO.NET 2.0 的 SqlCommand 和 SqlDataAdapter 合作
    透过 Socket API 让 PDA 和远程 PC 联机
    探讨 .NET 语言的 using statement 与资源释放
    让 user control 中的 Button 也能启用验证
    dotNET 語言中可提升效能的邏輯運算子
  • 原文地址:https://www.cnblogs.com/weiii/p/11792857.html
Copyright © 2020-2023  润新知