博客作业2---线性表

一、PTA实验作业(5分)

1.题目1:6-3 jmu-ds- 顺序表删除重复元素

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

1.(创建顺序表函数)使用new函数创建新链表L,定义循环变量  i  ;
2.         for   i=0  to  n  {
                  数组a【i】的元素赋值到顺序表中;
                }
3.将顺序表长度length赋值为n;

1.(删除顺序表重复元素)定义循环变量  i,  j,  k;
2.   for   i=0  to  n {
3.         for   j=i+1  to  n{多重循环找重复元素
4.                if(  i 和 j  指向的元素重复){
                              for  k=j   to   n-1  {
5.                                  从左向右移动来删除重复的元素;
                                     }
6.                                 L的长度减一;
                              }
                                                                                                                      
                   }
        }
7.如果顺序表的长度为2 ,却有重复元素,L->length--;

1.(输出顺序表)定义循环变量  i;
2.   如果循序表长度大于0     
            for  i=0  to  L->length-1  {
                     输出L->data [i];输出空格;
3.输出最后一个元素,不加空格

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

4.PTA提交列表说明。

问题:

  • 一开始我的长度length的值不是直接赋为n,而是通过每一次循环递增,同时初值赋为了-1,所以这样加加减减中就是长度值出错了。解决这个问题是我通过调试,调了挺久才发现这个问题,就改了直接赋为n。
  • 还有一个问题是当长度为2 时有重复,我的函数无法解决这个问题,所以再添了一个if一句判断重复与否及删除。

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

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

1.(创建链表不说)

1.(链表逆置)定义小指针  s,r。r  指向链表 L的next。
2.如果L为空表,输出NULL。
3.否则  {
         s指向  r  的next;
       while(s 的next 域不为NULL){
               r 的next  指向再下一个。
               将小指针 s  指向的节点接到  L  的头结点后面。
               小指针   s  重新指向  r  的next。
            }
4.当r的next域指向NULL,重复上一个步骤但是小指针  s  不必再指向  r 的next。
  
1.(输出链表)不说

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

4.PTA提交列表说明。

问题:

  • 一开始,创建链表的写法出错,在创建过程中把指向头结点的 L 大指针拿来移动,于是在后来的函数中,我定义的小指针就找不到头结点的位置,通过使用多条输出语句来调试,发现了这个问题,就添加了一个小指针 p 在创建链表函数里。
  • 第二次没有全对是因为输出函数多写了一句 p=p->next.

1.题目3:7-1 两个有序链表序列的合并

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

1.(主函数)定义链表 L, P, T;
2.  创建链表  一个L,一个P;
3.合并链表
4.输出链表
 
1.(创建链表)开辟L的空间,并且next指向NULL;定义小指针 s,  p;  p=L;定义循环变量  i;
2.for   i=0  to   未知{
                  开辟小指针  s  的空间,next 指向NULL;
3.                 输入  s->data ;
4.                    如果输入数值为-1   退出;
5.                    将小指针  s  挂到   L  链表上(通过p)
            }
 
1.(合并链表)定义三个小指针  l, p ,t;为合并成的新链表T开辟空间,next指向NULL;
2.小指针 l,  p,分别指向链表 L,P的next。小指针  t 指向T;
3.while(两个小指针  l,p 还没有指向NULL) {
                   比较两个小指针的大小,并将较小值赋给  t。
                   t=t->next;
              }
4.当其中一个链表已经比较完,将另一个链表的剩下值赋给小指针  t。
 
1.(输出链表)定义小指针  r;	r=T->next;
2.如果链表为空,输出NULL;
3.否则while(r->next!=NULL){
          输出r->data;输出空格;r指向next;
        }
4.输出最后一个数,不加空格;

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

4.PTA提交列表说明。

问题:

  • 编译错误是一些用错编译器,少了符号等小错误。
  • 一个错误是在输出函数有一个链表为空时输出NULL没写,差了一分。

题目2,3同题目1

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

1.顺序表PTA排名

2.链表PTA排名

3.我的总分:

205

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

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

  • 这一周在数据结构的时间上花了挺多的,但是我的安排不合理,我在周末两天内一口气打pta,这没给我带来学习效益,所以希望以后还是尽量课前预习,课后复习打pta这样。我这周遇到问题一般是自己调试解决,以后多向别人或者群里问问。
    安排内容:学习时间安排、编程时间安排、不懂问题是哪种方式交流?

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

  • 线性表是一种常用的数据结构,常见用顺序表和链表,数据之间的关系是一对一的关系,并且首尾相连。

3.代码Git提交记录截图

在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。

注意:一个合理的项目提交应包含多次提交记录,请务必一开始就使用Git管理你的代码。
Git使用方法:Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)

四、阅读代码(选做,加1分)

君霞的代码,她的代码用的是数组,链接关系我觉得比我更明晰一点,代码也比我的的更短。

posted @ 2018-03-25 20:55  一叶落而秋将至  阅读(279)  评论(1编辑  收藏  举报