第02次作业-线性表
Posted 张馨玙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第02次作业-线性表相关的知识,希望对你有一定的参考价值。
1.题目1:6-3 jmu-ds- 顺序表删除重复元素(25 分)
2.设计思路:
List Delete( List L, ElementType minD, ElementType maxD ){
定义整型变量i,j,s;
s=0;
for i=0 to L->Last
i的值加一;
end;
if L->Data[i]小于等于minD or L->Data[i]大于等于maxD;
then L->Data[j]等于L->Data[i];j的值加一;
end if;
s等于i-j;
if s不等于0;
thenL->Last等于L->Last-s;
返回L的数据;
end if;
}
3.代码截图
4.PTA提交列表说明。
错误1:没有控制好输出的长度,导致输出数据末尾自动补0
解决方法:将循环的次数修改,数组的长度从-1开始。
错误2:一时卡路,多用了一个循环,步骤变的复杂,导致数据错误。
解决方法:删除多的循环
1. 题目2:6-3 jmu-ds-链表倒数第m个数(20 分)
2.设计思路
int Find(LinkList L, int m ){
定义结构指针p指向L的下一个结点,q指向L的下一个节点;
定义整型变量i和j;
j的初始值为0;
while p 不为空;
do j的值加一;
p指向下一个结点 ;
end
if m大于j or m小于等于0
then
返回-1;
end if
for i等于1 to i等于j-m;
if q不为空;
then q指向下一结点;
else 返回-1;
end if
end;
返回q指向的结点的数据;
}
3.代码截图
4.PTA提交说明
错误1:编译错误是因为没有仔细看题目要求,将创建链表函数和删除函数一起提交了;
错误2:没有考虑的当链表为空的情况;
解决方法:加上if(q==NULL) return -1;
1. 题目3:7-1 两个有序链表序列的合并(20 分)
2.设计思路
定义结构体LNode;
定义函数 InitList,
定义函数 CreateListR;
定义函数 Union;
定义函数 printf;
int main{
定义指针la,lb,lc;
引用函数
InitList(la);
InitList(lb);
InitList(lc);
CreateListR(la);
CreateListR(lb);
Union(la,lb,lc);
printf(lc);
end;
}
void InitList(LinkList &L){
为L申请存储空间;
L下一结点为空 ;
end;
}
void CreateListR(LinkList &L){
定义指针p,tem;
定义整型变量i;
指针tem等于L;
输入i的值 ;
while i大于0
do 为p分配动态存储空间;
将i的值赋给p指针所在结点;
p的下一结点为空;
指针tem指向的下一结点为p指针所在结点;
tem等于p;
输入x的值;
end
}
void Union(LinkList La,LinkList Lb,LinkList &Lc){
定义指针pa,pb,r,s;
指针pa指向La下一结点,指针pb指向Lb下一结点;
定义整型变量j;
指针r等于Lc;
while 指针pa和Pb都不为空
do
if pa->data小于pb->data;
then 为s申请动态存储空间;
将pa指向结点的数据赋给s所在结点;
指针r指向的下一结点为s指针所在结点;
指针r指向s指针所在结点;
pa指向下一结点;
else
为s申请动态存储空间;
将pb指向结点的数据赋给s所在结点;
指针r指向的下一结点为s指针所在结点;
指针r指向s指针所在结点;
pb指向下一结点;
end if
end
while pa不为空;
do 为s申请动态存储空间;
将pa指向结点的数据赋给s所在结点;
指针r指向的下一结点为s指针所在结点;
指针r指向s指针所在结点;
pa指向下一结点;
end
while pb不为空;
do 为s申请动态存储空间;
将pb指向结点的数据赋给s所在结点;
指针r指向的下一结点为s指针所在结点;
指针r指向s指针所在结点;
pb指向下一结点;
}
void printf(LinkList L){
定义指针p指向指针L的下一结点;
if p为空;
then 输出NULL;
else 输出p指针指向结点的数据;
p指向下一节点;
while p不为空;
do 输出p指向结点的数据;
p指向下一结点;
end
end if
}
3.代码截图
4.代码提交列表说明
错误1:没有给出循环终止的条件,陷入死循环;
错误2:自己给出了输入数据个数范围,导致答案错误;
解决方法:将循环进行的条件改成当i>0时,循环可进行。
二、截图本周题目集的PTA最后排名
本次2个题目集总分:290分
1.顺序表PTA排名
2.链表PTA排名
3.我的总分:PTA总分在200--250分:2分
三、本周学习总结
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
一般在中午和晚上打代码,或者是没课的时候。效率很低,有时候大半天一题都做不出来,应该多问问老师和同学,同时多看书上的内容,多敲代码。
2.谈谈你对线性表的认识?
1.线性表是具有相同特性的数据元素的一个有限序列
2.线性表有顺序存储结构和链式存储结构,链式存储结构会比顺序存储结构要方便
3.链表的添加和删除只需改变指针的指向,再增加或删除结点,而顺序表需要移动删除或增加的元素后面的所有元素。
3.代码Git提交记录截图
以上是关于第02次作业-线性表的主要内容,如果未能解决你的问题,请参考以下文章