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