zoukankan      html  css  js  c++  java
  • 博客作业2---线性表

    一、PTA实验作业(5分)

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

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

    自定义函数void CreateSqList(List & L, int a[], int n)
    定义变量i用于循环
    for i = 0 to n-1
      赋a[i]的值给L -> data[i] 
    end for
    自定义函数void DelSameNode(List & L)
    定义变量i用于循环,j用于二次循环,judge判断元素是否重复,k表示m的下标,m用于存储非重复的元素,d代表长度
    定义m[maxsize]存储非重复的元素
    令d=L -> length;
    for i = 0 to d
    令judge = 0
      for j = i-1 to 0
        若L -> data[j] 等于 L -> data[i]
           judge = 1
        若 judge= 0
           将该元素存入m[i]
         否则表示该元素重复,长度减一
      end for
    end for
    for i = 0 to L 的长度
      令L -> data[i] 等于 m[i]
    end for
    自定义函数void DispSqList(List L)
    定义i用于循环
    若不为空表,输出第一个不带空格的元素
    for i = 1 to L 的长度
     输出带空格的元素
    end for
    

    3.代码截图

    4.PTA提交列表说明。



    未考虑空表时的输出
    用了 if 来修正

    题目2 单链表逆置

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

    自定义函数void CreateList(List & L, int n)
    定义变量 i 用于循环 
    定义指针 r用于操作,p = L
    for i = 0  to n-1 
      输入数字r->data
      令r -> next 等于 p -> next
      p -> next =r
      p = p -> next
    end for
    自定义函数ReverseList(List & L)
    定义指针 s , p = L -> next
    当 p不为空时
      令s指向p,p指向r,r等于p,p等于s 
    退出循环后
    L 指向 r
    自定义函数PrintList(List L)
    若 L -> next -> next 为空
    输出 NULL
    否则
      令 L 指针向后移动
      输出L -> data
      再令 L 后移 
         当 L 指向非空时
        输出  “”L->data
        指针后移
      结束循环 
    

    3.代码截图

    4.PTA提交列表说明。

    未给r分配空间导致以及没有考虑空链表导致段错误。

    题目3 两个有序链表序列的合并

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

    定义链表 L1 L2 L3 
    定义工作指针s1 = L1 
            s2 = L2
            s3 = L3 
    定义工作指针r 
    定义变量n=0
    用尾插法建立2个链表
    循环比较 s1 -> data 与 s2 -> data
    若 s1 -> data > s2 -> data) {
                r -> data = s2 -> data;  
                r -> next = s3 -> next;
                s3 -> next = r;
                s2 = s2 -> next;
            }  将小的存入L3并且令其指针后移 
    小于等于时同理 
    利用循环输出 
    

    3.代码截图

    4.PTA提交列表说明。



    忘记分配内存,并列时我把重复的给删除了导致第二点错误

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

    1.顺序表PTA排名

    2.链表PTA排名

    3.我的总分:215

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

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

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

    不满意,时间不够,大多数时间都在做pta,做得很慢,下次要提高效率

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

    此处先谈你自己主观认识,后面再具体总结本章各个小节内容。
    线性表是一种数据,是以栈、队列、字符串、数组等特殊线性表的形式来使用的,能够提高数据运算的效率,线性表是一个线性结构。

    3.代码Git提交记录截图

    四、阅读代码

    void isSymmetric(Node *L){  
        int arr[maxSize];         
        //链表中共有n个元素  
        Node *r;  
        r = L->next;  
        int i = 0;  
        while(i < (linkListSize)/2){//当小于一半的时候   
            arr[i] = r->data;  
            r = r->next;//循环   
            i++;   
        }  
        i--;//回到数组的最高值   
        //若linkListSize是奇数,则需要后移一位(越过中心结点)  
        if(linkListSize%2==1)   r= r->next;   
        while(r!=null)//未到链表尾部时   
        {  
            if(r->data == arr[i])  
            {  
                i--;   
                r = r->next;   
            }   
            else break;//跳出循环   
        }   
        if(i == -1){  
            printf("中心对称
    ");  
        }   
        else{  
            printf("非中心对称
    ");  
        }   
    }  
    

    该代码用于判断链表是否对称,用a []存前半段代码,再与后半段比较,若不同跳出循环输出不对称,否则循环到结束,输出对称,思路清晰,注释明白

  • 相关阅读:
    单词篇:(单词应用10~11)
    单词篇:(单词识记11)
    单词篇:(单词识记10)
    单词篇:(单词识记8~9)
    单词篇:(单词应用9)
    单词篇:(单词识记8)
    单词篇:(单词应用6~7)
    单词篇:(单词识记7)
    单词篇:(单词识记6)
    单词篇:(单词应用4~5)
  • 原文地址:https://www.cnblogs.com/chenwenjie/p/8645430.html
Copyright © 2011-2022 走看看