码迷,mamicode.com
首页 > 其他好文 > 详细

博客作业2---线性表

时间:2018-03-25 21:45:51      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:包括   博客   计数器   .com   for循环   body   添加   mdi   node   

一、PTA实验作业

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

设计思路

定义整型变量i作为循环变量,j用来储存所删除节点的个数
for (i小于顺序表长度时执行循环)
  if(顺序表中第i个数大于Mind且小于MAXd)
       j++
  否则L->Data[i-j]=L->Data[i];
  i++
L->Last-=j;

代码截图

技术分享图片

PTA提交列表说明

技术分享图片

本题第一次提交时用了while循环语句,结果编译器判定是段错误,后来改为for循环时提交答案正确。

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

设计思路

void CreateList(List &L,int n){
    if(n==0){          判断输入n是否为零 
        printf("NULL");
        exit;若是0 则输出NULL并退出
    }
    定义链表指针 s,r
    定义整型变量i作为循环数x用来储存要写入链表的数;
    L=(ListNode * )malloc(sizeof(ListNode));链表初始化
    让r指向头节点
    for(i<n时执行循环){
        s=(ListNode * )malloc(sizeof(ListNode));
        输入数并储存在x中;
        把x中的数写进;链表
        r->next=s;
        r=s;
    }
    r->next=NULL;
}
void ReverseList(List &L){
    定义链表指针p,q,r
    if(表为空) return;
    p=L->next;p,q分别指向L 与q的下一个节点
    q=p->next;
    p->next=NULL;
    while(q指向节点不为空执行循环){
        r=q->next;
        q->next=p;逆置链表
        p=q;
        q=r;
    } 
    L->next=p;
}
void PrintList(List L){输出链表
    ListNode *p=L->next;
    while(p!=NULL){
        if(p->next==NULL){
            printf("%d",p->data);
        }
        else{
        printf("%d ",p->data);}
        p=p->next;
    }
}

代码截图

技术分享图片
技术分享图片

PTA提交列表说明

技术分享图片

本题第一次提交时是因为输出函数格式不正确而导致答案错误,加上并没有判断输入的n是否合理所以错了,后来经过修改改正

题目3:7-3 两个有序序列的中位数

设计思路

struct mdian{创建结构体
    int num;
};
创建结构体数组 str[200005];
bool compBySize(struct mdian a,struct mdian b){
    return a.num<b.num;}
int main(){
    定义整型变量n来记录数据
    输入整数存于n
    定义整型变量i作为为外层计数器
    for(i<2n时执行循环){
        输入整数存于结构体数组;
    }
    sort(str,str+2*n,compBySize);//排序
    printf("%d",str[n-1]);按顺序输出数组
    return 0;
}

代码截图

技术分享图片

PTA提交列表说明

技术分享图片

本题用链表处理比较麻烦,于是巧妙地运用了数组,算是一点小偷懒了= =
所以除了前两次提交编译器没选好出现了编译错误
其他地方没有什么大的错误

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

1.顺序表PTA排名

技术分享图片

2.链表PTA排名

技术分享图片

3.我的总分:

200

三、本周学习总结

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

其实本周自己对于时间的安排不是特别好,这学期学到数据结构明显比较吃力了,所以平时做作业也不是特别积极,导致本周的作业都是堆到最后几天来做的,所以自己很不满意,以后要养成经常打代码的习惯,作业尽量提早做,平时经常复习,提高自己对代码的熟练度。

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

线性表是最基本、最简单、也是最常用的一种数据结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。
除此之外还有很多东西有待学习,而且我对线性表研究的也不是很透彻,以后补充。

四、阅读代码

技术分享图片
技术分享图片
技术分享图片

作者仅仅用不到100行代码就实现了双向链表。
包括以下功能:
1. 添加节点
2. 删除节点
3. 取得头节点
4. 取得尾节点
5. 取得下一个节点
6. 取得上一个节点
7. 链表是否为空的判断
8. 取得链表节点个数
而且代码很清晰 可读性很高 很值得学习

博客作业2---线性表

标签:包括   博客   计数器   .com   for循环   body   添加   mdi   node   

原文地址:https://www.cnblogs.com/llg202827372/p/8646551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!