博客作业2---线性表

一、PTA实验作业

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

2. 设计思路

定义变量i表示第i个字符,len记录删除的个数
for  i=0   to   L->Last  {
     if(第i个数<=minD||第i个数>=maxD){
          删除区间内的数
          len++
      }
}
L->Last=--len
返回L

3.代码截图

4.PTA提交列表情况说明


之前一直用的两层循环,时间复杂度超过题目,运行超时

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

2. 设计思路

1.尾插法建立新链表
分配内存
定义变量i计数,数组a[1000],结构指针*s插入新节点,*r存放尾节点
创建链表
if(n>0) {
    for   i=0  to  n {
         输入数据存放在数组中
         建立新的链表s
         s->data=a[i];
         把s存入r
         }
     尾节点为NULL
    }
else 
   L->next为NULL
}
2.单链表逆置
定义结构指针p插入新节点,q存放逆置的节点
p=L->next;
while(p) { 把p插入q所指的逆序链表
      q=p;
      p=p->next;
      q->next=L->next;
      L->next=q;
}
3.输出链表
定义结构指针p,p=L->next;
如果链表为空,输出NULL
否则 先输出第一个数据,指针后移
while(p!=NULL) {
    输出空格和下一个数据
}

3.代码截图

4.PTA提交列表情况说明

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

2. 设计思路

头文件,建立链表,建立相应结构体
1.主函数
定义链表s1,s2存放输入的数据,s3存放合并后的数据
输入数据
合并链表
输出合并后的链表
2.建立链表L,if(!L),返回NULL,L->next=NULL,返回L
3.定义data表示数据,输入数据
  while(data >0 ) {
       建立新链表temp
       if(!temp),返回NULL
       把data存放在temp->data中
       继续输入数据data
}
4.连接合并链表
while(s1!=NULL&&s2!=NULL) {
     if(s1的值大于s2的值) 把s2插入s3中,s2指向后一位
     else 把s1插入s3中,s1指向后一位
     s3指向下一位
     if(s1,s2为空)  返回s3
     if(s1为空)       把s1插入s3
     else               把s2插入s3
5.输出合并后的链表
if(L为空) 输出NULL
else while(L不为空) {
   输出L的值,L指向后一位
}

3.代码截图

4.PTA提交列表情况说明。

二、截图本周题目集的PTA最后排名。



我的总分:2分

三、本周学习总结

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

本学期开始,伴随着包括数据结构,大学物理等很多重要课程的学习,学习难度也在上升,就我目前的表现看并没有确切实现上学期期末的规划,遇见问题也并没有及时的去群里面询问,已经过了快一个月了,必须跟上现在的学习进度。

2.谈谈你对线性表的认识?

线性表有链表和顺序表。链表在插入、删除元素时只需对单个结点进行操作,不必移动元素;顺序表对数据的访问便捷,不会因为未表示表中元素逻辑关系而占用内存。

3.代码Git提交记录截图

posted @ 2018-03-25 22:00  折原临也  阅读(215)  评论(2编辑  收藏  举报