博客作业2---线性表

本文详细介绍了PTA平台上三个线性表实验题目的设计思路及代码实现过程,包括线性表元素区间删除、链表倒数第m个元素查找及两个有序链表的合并。同时分享了作者在实验过程中的心得与体会。

---恢复内容开始---

一丶PTA实验作业

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

2. 设计思路

定义整型变量i,j;
新定义一个链表 L1;
for i=0 to L->Last     遍历链表
  if(L->Data[i]<maxD&&L->Data[i]>minD)
   则  L->data[i]=0(作为重构筛选标志)
end for
for i= 0 to L->last 
    if(L->Data[i]!=0)
       则  L1->Data[j]=L->Data[i];
         j++递增;
end for
尾指针L->Last=j-1;
返回L1;
    

3.代码截图

1240473-20180325200122534-991205835.png

4.PTA提交列表说明

1240473-20180325200209028-1223197284.png

  • 新定义顺序表是要给它重新分配空间
L1=(List)malloc(sizeof(struct LNode)) ;
  • 尾指针初始L->Last应为-1,最终指向表尾

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

2. 设计思路

定义整型变量 i,n,g,结构体指针p=L->next,s;
for p=L->next to p=NULL  遍历链表求出长度
    g++;
    p=p->next;
end for
s=(LinkList)malloc(sizeof(LNode));  分配空间
s=L;
for i=0 to g-m    将结构体指针移到倒数位置
    s=s->next
end for



    

3.代码截图

1240473-20180325204217516-672706466.png

4.PTA提交列表说明

1240473-20180325204253309-1491146500.png

  • 为判断明确输入数据为无效的情况,在大于链表长度以及输入负数时均为不满足情况

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

2. 设计思路

typedef struct LNode    //定义单链表结点类型
{
  ElemType data;
  struct LNode *next;
} LinkList;

定义结构体链表*L1,*L2,*L3,结构体指针*r,*s
L1=(LinkList *)malloc(sizeof(LinkList));动态分配空间
L1->next=NULL;(L2,L3同)
r=L1
输入number
for  to -1
   s=(LinkList *)malloc(sizeof(LinkList));
   s->data=number   尾插法
   s->data=number;
   r->next=s;
   r=s;
   输入number
end for
(L2输入数据操作同L1) 
while  to   p->data=-1 || q->data=-1   二路归并
   if(p->data<q->data)
     则 e=(LinkList *)malloc(sizeof(LinkList));
         e->data=p->data;
          r->next=e;
          r=e;
         p=p->next;
     else 
           e=(LinkList *)malloc(sizeof(LinkList));
    e->data=q->data;
    r->next=e;
    r=e;
       q=q->next;
end  while
 if(p->data==-1)
     则while to  q->data=-1
            e=(LinkList *)malloc(sizeof(LinkList));
        e->data=q->data;
        r->next=e;
        r=e;
        q=q->next;
         end  while
        r->next=NULL
 else
       while to  p->data=-1
            e=(LinkList *)malloc(sizeof(LinkList));
        e->data=q->data;
        r->next=e;
        r=e;
        p=p->next;
         end  while
        r->next=NULL
s=L3->next;
if(L3!=NULL){
    则while to s=NULL
          按格式输出s->data
   else  输出NULL;



  

3.代码截图

1240473-20180325215319441-1306078212.png
1240473-20180325215347488-2034232736.png

1240473-20180325215432061-809647944.png

1240473-20180325215451738-327778665.png

4.PTA提交列表说明

1240473-20180325215652293-159893788.png

  • 不明白大数据输入为什么通不过,测试不出来
  • 习得了二路归并法

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

1.顺序表PTA排名

1240473-20180325215913889-385537744.png

2.链表PTA排名

1240473-20180325215945425-1061983792.png

我的总分:155

三、本周学习总结

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

  • 写代码时一直需要翻阅书本,对基本知识点掌握不够牢固
  • 预习时不能仅限于课堂,自己也需要拓展

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

  • 线性表是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。
  • 线性表特点:线性表的逻辑顺序与物理顺序一致,数据元素相邻的位置与计算机的物理位置相同

3.代码Git提交记录截图

1240473-20180414211829875-259785057.png

转载于:https://www.cnblogs.com/zhangzhixin1998/p/8647368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值