博客作业2---线性表

一、PTA实验作业

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

1. 设计思路

for(i 0 to length-1){
 for(j 0 to i-1){
 if(data[j]与data[i]相等)
 重复跳出循环
 }
 if(j大于等于i){//没有重复数字
 data[k]=data[i]//对顺序表重新赋值
 k++}
}
 length为k

2.代码截图

3.PTA提交列表说明

刚开始把重新赋值的代码放在了第二个for里面。

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

1. 设计思路

LinkList p=L//用p代替L
while(p->next不为0){
n加一,p变为p->next
}
if(m为0或者大于n)
不存在返回-1
while(j小于n-m+1且p不为0){
j加一,p变为p->next
}
if(p为0)返回-1
否则 返回p->data

2.代码截图

3.PTA提交列表说明

没有考虑到m为0的情况。

题目3:7-2 一元多项式的乘法与加法运算

1. 设计思路

add_list函数
单链表存放有序表的归并算法
while(ha&&hb){
  if(ha->expn大于hb->expn)
  tmp->coef = ha->coef;  //赋值
  tmp->expn = ha->expn;  
  ans->next = tmp;  //尾插
  ans = tmp;  
  ha = ha->next;//下移
}
 else if(小于){

}
 else{//等于
 两系数相加
 if(和不为0){
 赋值
尾插
}
ha,hb下移
}
若ha或hb不为0
继续赋值尾插
ans指向NULL
multi_list函数
while(ha){
 while(hb){
 ltmp->expn = ha->expn + hb->expn; //指数相加,系数相乘  
 ltmp->coef = ha->coef * hb->coef;  
            ans->next= ltmp;  //尾插
            ans = ltmp;
            hb = hb->next; //下移
  }
ans->next = NULL;  
add_list(fans,tmp,fans); //将乘法分解成一次次的加法,每次都排序  
ha = ha->next;
}

2.代码截图

3.PTA提交列表说明

在进行乘法运算的时候一开始并没有想到调用加法运算函数。

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

1.顺序表PTA排名

2.链表PTA排名

3.我的总分:215

三、本周学习总结

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

  • 数据结构学习,这周巩固课本上的代码,打打pta,写写博客园,但没有保证每天能有一定的时间给代码。
    不太满意,要每天分些时间打代码,同时掌握经典的代码,弄熟弄透。在学习新的知识的同时,巩固所学的知识。

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

  • 线性表根据存储结构的不同分为顺序表和链表,链表又分为单链表,双链表以及循环单,双链表。其中最重要最常见的就是有序表。顺序表通过结构体数组来实现,在内存中所占的地址是连续的,看起来比较浅显易懂,较容易掌握。而链表掌握起来并不是很容易,链表由一个个节点组成,一个节点包括数据域和指针域。链表在在内存中所占的地址是变的,因此要考虑空表,越界等问题。指针是非常灵活的,一不小心就非法指向了。掌握好链表的知识,对于一些题目解答起来是非常容易的。

3.代码Git提交记录截图

posted @ 2018-03-25 22:01  yawlc  阅读(248)  评论(1编辑  收藏  举报