博客作业2---线性表

一、PTA实验作业(5分)

题目1: 线性表元素的区间删除

设计思路(伪代码或流程图)

   定义三个变量 i为循环变量,j,count控制链表的移动
       当i<=L->Last时{
       如果L->Data[i]在可删除区间内,count++;
       否则j++;}
   循环结束,链表的长度减少count

代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

1233587-20180325200919005-59125221.png

PTA提交列表说明。

1233587-20180325195940722-2003589563.png

  • 一开始不知道函数的示例程序是不完整的,所以不管删除那部分代码怎么写,编译器都提示编译错误,所以也不知道对不对,每次都往上提交,结果pta上也说不对。我本来绝得这题得思路还是很清晰的,只要在删除区间内,指针直接往下移动跳过要删除的数就好了,可是具体写的时候就是运行不出来,最后这题基本上是在舍友的指导下写的。

题目2: jmu-ds-单链表逆置

设计思路(伪代码或流程图)

    //创建单链表 
         为L申请内存
         尾插法建立单链表

   //逆置单链表 
         定义三个链表,p,q,s;
         q指向L的下一节点,将L的内容全部清空
         while(q){
         仿造头插法,利用中间链表s,用头插法往L里新建内容
         让q记住p的下一节点
           free(p);
       }
 
   //输出单链表 
    定义链表p指向L的下一节点,定义space=0判断是否需要输出空格
         如果p==NULL时输出NULL
            while(p!=NULL){
                 如果 space!=0    输出空格
             输出p->data
             p=p->next;
        space++;}

代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

1233587-20180325204539397-1629664460.png
1233587-20180325204554287-1872096419.png

PTA提交列表说明。

1233587-20180325204641658-270250425.png
1233587-20180325204700199-798770156.png

  • 这一题一开始想的太简单,就以为是用尾插法建立链表,仿照头插法再输出就好了。结果提交pta就各种错误。
    1233587-20180325210215582-1920777129.png
  • 然后舍友问我为什么要把q,r都置为NULL,我发现好像还真的不用这样,p指向的next也没有定义,整个内容错误太多。后来受到舍友的启发,用q来记录L的下一节点,然后将L置为NULL后再重新用头插法往里面放内容,所以就改成了现在这样。

题目3:jmu-ds-链表倒数第m个数

设计思路(伪代码或流程图)

    定义变量length存放链表的长度,定义一个新链表p
       p=L;
        while(L->next){//计算链表长度
        L=L->next;
        length++; 
    }
    for(int j=1;j<length;j++){
        如果j==(length-m+1)
        返回L->data;}
      返回-1;

代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

1233587-20180325215425324-2101776753.png

PTA提交列表说明。

1233587-20180325215500129-2051933880.png

  • 一开始的思路是让p遍历到链表的倒数m处,然后再让p,f一起遍历链表,当p在次遍历到尾部时,f就刚好到了倒数m处,但是就是调试不出来,只能换个思路,计算出链表长度,当链表到达length-m+1处时再输出 L->data;

二、截图本周题目集的PTA最后排名(3分)

1.顺序表PTA排名

1233587-20180325205035976-302296062.png

2.链表PTA排名

1233587-20180325232157445-1902319318.png

3.我的总分:133

三、本周学习总结(2分)

1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)

安排内容:学习时间安排、编程时间安排、不懂问题是哪种方式交流?

  • 这一周的学习时间安排很不合理,这周的社团活动并没有占据很多时间,本周的空闲时间还是很多的但是都不怎么用到学习上,一周时间都是浑浑噩噩的,然后到周末了才开始敲代码,写题目。开学这么久了还是不怎么再学习状态,再加上数据结构又比上学期的C难了许多,所以很多时候听老师讲课也不怎么听得懂。听不懂就不想写题目,不想写题目就更加不会,就这样陷入了一个恶性循环里。然后后面写题目时也就和舍友或者问一下隔壁,不怎么到群里问,因为进度太慢了,不好意思去群里问。从下个星期起会努力的进入状态,争取每天可以写一道题目,不会的题目也会试着到群里问一下。

2.谈谈你对线性表的认识?(1分)

此处先谈你自己主观认识,后面再具体总结本章各个小节内容。

  • 线性表是最基本、最简单、也是最常用的一种数据结构。它可以分为顺序表和链表两种。但是顺序表里面元素的地址是连续的,链表里面节点的地址不是连续的,是通过指针连起来的。在查找元素时顺序表的效率比链表高,但是插入删除时链表的效率远高于顺序表。

    3.代码Git提交记录截图

转载于:https://www.cnblogs.com/1795759388-/p/8647272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值