一、PTA实验作业

 

题目一:

6-3 jmu-ds- 顺序表删除重复元素

 

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

 

1.创建顺序表,采用for循环,

将从主函数传来的数组a【】录入到顺序表中,

其中循环次数n为顺序表的长度,for(i=0;i<n;i++)

2.输出顺序表,同样采用for循环,n与上同,

逐个输出//printf("%d",L->data[i]);(已经经过删除函数处理);

为满足题目要求,空格在if语句中输出

if(i<L->length-1)printf(" ");

3.删除重复元素,定义变量看k,q,s来控制双重循环,

for(k=0;k<L->length;k++)

 第一层从第一个元素开始,

让其与从第2个元素到最后一个元素的数值进行比较

(由2层循环来实现  q=k+1; while(q<L->length)),

一旦两个元素的数值相同,

则从第q个元素开始向前缩进1,

if(L->data[k]==L->data[q])    L->data[s]=L->data[s+1]   同时将顺序表长度减一,

然后重复第一层循环,逐个元素比较。

3.实验代码

 

(仅删除函数)

4.PTA提交列表说明

 

做题轻率大意,没有事先在编译器查看是否能够运行

后在编译器查找错误,得以解决

6-3 jmu-ds-链表倒数第m个数

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

定义结构体指针就就j=l;k=l;

if(输入的m小于等于0)

则return -1

else

for(int i=0;i<m;i++){

j指向下一个节点

}

if(j==NULL){  //超出范围

return -1;

}

k指向头节点

while(j没有指向链尾){

j=j->next;k=k-next;//j已经进行了m次循环,当其指向链尾时,k正好指向倒数m个处的节点

}

返回k的值即为题目所求

3.实验代码

4.PTA提交列表说明

 

错误点:一开始if(j==NULL)判断是否超出范围写在了第一次for循环之前,导致程序无法辨别是否超出范围,但pta只是提示无效范围,自己找不到错误点,问了下大佬,得以解决。

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

 

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

定义整型变量n,i,q,k用来计数

定义3个数组 a[100000],b[100000],c[200000],来储存元素

for(i=0;i<n;i++){
读入输入的元素进a[ ]
}

 

b[ ]同上

while(i<n&&k<n){//

 

if(a[i]<b[k]){//用if else 语句来剔除重复的元素,并排序
c[q]=a[i];
i++;

}

else{
c[q]=b[k];
k++;
}
q++;

}

剔除后即为a【】b【】的并集c【】

由题目

返回c[(2*n-1)/2;

3.实验代码

4.PTA提交列表说明

错误点:一开始被并集搞得有点迷糊,原先想先都录入到c【】再剔除重复元素,但代码写的不行,实现不了这个功能

解决方法:搞不定就换换种思路,在录入进c【】时通过比较a【】与b【】的大小,剔除重复元素的录入

1.顺序表PTA排名

 

2.链表PTA排名

 

3.我的总分:

总分:2

三、本周学习总结

学习时间安排:学习时间大部分在晚自习

不满意,尽量不太过于怠惰懒散,多看书,多学习,多交流

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

主观:线性表是一种逻辑结构,第一个元素无前驱,最后一个元素无后继

总结:线性表有顺序表和链式两类存储结构,由零个或多个数据元素组成的有序序列,常见操作有

1:建立一个空的线性表并初始化

2:插入节点,删除节点

3:查找节点

4:获取元素个数

3.代码Git提交记录截图

在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。

 

posted on 2018-03-24 20:41  海原的援军  阅读(165)  评论(1编辑  收藏  举报