zoukankan      html  css  js  c++  java
  • 第02次作业-线性表

    一、PTA实验作业

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

    1. 设计思路:

    1.首先定义i,j两个变量,i用来记录数组Data[]的下标,而j用来记录在区间(minD,maxD)之中的元素个数。

    2.当i=0到i=L->Las-1t时,

    如果L->Data[i]>minD&&L->Data[i]<maxD,用j来记录。

    不然 L->Data[i-j]=L->Data[i],i加一

    最后线性表的长度减去j。返回 链表L;

    2.代码截图                                                    

    3.PTA提交列表说明。

    解决方法:一开始没有考虑表是空表,直到提交,看到测试点才发现,在加入判断表是不是空的时候,又出现错误,经过多次的修改,才正确。

    题目2:7-1 两个有序链表序列的合并(20 分)

    1. 设计思路:

    1.先定义 init(LinkList &L);//初始化链表
    read(LinkList &L);//读入函数
    merge(LinkList La,LinkList Lb,LinkList &Lc);//合并函数
    print(LinkList L);//输出函数
    这四个函数
    2.定义三个指针la,lb,lc;
    初始化 init(la);init(lb);init(lc);这三个链表。
    用 read()函数读入数据
    用merge()函数合并
    输出合并的链表。
    3.核心函数 void merge(LinkList La,LinkList Lb,LinkList &Lc)
    定义三个指针 pa,pb,pc;
    用pa指向La->next;pb指向Lb->next;
    Lc指向pc,Lc指向La;
    while(pa&&pb){//判断pa和pb是不是空
    if(pa->data<=pb->data){//比较pa和pb的大小;
    pc->next=pa;
    pc=pa;
    pa=pa->next;
    }
    else{
    pc->next=pb;
    pc=pb;
    pb=pb->next;
    }
    }
    pc->next=pa?pa:pb;//看pa和pb那个的为空,把不为空的复制到链表Lc。

    2.代码截图

    3.PTA提交列表说明。

     

    解决方法:1.开始是没有理解链表的头插法,写出的代码是错误的,经过查找资料,问同学,了解头插法。才把代码改对。

    题目1:6-2 jmu-ds-单链表逆置(25 分)

    1. 设计思路:

    void CreateList(List &L,int n)
    {
    定义指针 *r,*s;
    int i,a;
    分配内存L=new node;
    r指向L;
    for(i=0;i<n;i++)用尾插法来建立链表
    {
    scanf("%d",&a);
    s=new node;
    s->data=a;

    r->next=s;
    r=s;
    }
    r->next=NULL;

    }
    void ReverseList(List &L)
    {
    定义指针 *pre,*cur;
    pre 指向 L->next;
    L->next=NULL;
    while(pre!=NULL)使用尾插法倒置链表
    {
    cur=pre;
    pre=pre->next;
    cur->next=L->next;
    L->next=cur;
    }

    }
    void PrintList(List L)
    {
    ListNode *p=L->next;
    if(p!=NULL)
    {
    printf("%d",p->data);//为了满足输出格式,
    p=p->next;
    while(p!=NULL)
    {
    printf(" %d",p->data);
    p=p->next;
    }
    }
    else
    printf("NULL");
    }

    2.代码截图

    3.PTA提交列表说明。

     解决方法:开始是越界,导致段错误,然后用尾插法来实现,但当表为空时,就不知道怎么弄,最后用头插法,就解决了。

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

    1.顺序表PTA排名

    2.链表PTA排名

    3.我的总分:193

    三、本周学习总结

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

    .1)编程时间:有时间就进行编码学习,尽量每天都能有所发现。但收获有点少 。

    2)学习时间:周一至周五有提前预习和复习,但是还有好多不懂。

    3)遇到不懂问题大部分向班级同学求救和百度搜查。但还是感觉太难了。

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

    线性表中元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高。线性表这张讲链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。难度有点大。

    3.代码Git提交记录截图

  • 相关阅读:
    PHP 如何安全的使用 MySQL ?
    IntelliJ IDEA 内存优化最佳实践
    当我们在谈论 DevOps,我们在谈论什么?
    第84节:Java中的网络编程(中)
    Java工程师必备
    Java工程师必备
    第83节:Java中的学生管理系统分页功能
    第83节:Java中的学生管理系统分页功能
    第82节:Java中的学生管理系统
    第82节:Java中的学生管理系统
  • 原文地址:https://www.cnblogs.com/lj1507899927/p/8641333.html
Copyright © 2011-2022 走看看