第二次作业-线性表
一
1、6-3 jmu-ds- 顺序表删除重复元素
1、题目:
设计一个算法,从顺序表中删除重复的元素,并使剩余元素间的相对次序保存不变。
- 输入格式: 第一行输入顺序表长度。 第二行输入顺序表数据元素。中间空格隔开。
- 输出格式:数据之间空格隔开,最后一项尾部不带空格。
- 输出删除重复元素后的顺序表。
- 你需要实现的函数有下面三个:
2、设计思路:
定义变量i,j,k控制循环,将data中的数据遍历比较。
相同即删去,后面每一位提前。
//
if(L->data[i]==L->data[j])//j为重复
{
for(k=j;k<L->length-1;k++)
L->data[k]=L->data[k+1];
L->length--;
}
3:代码截图:
4、pta提交记录
:
2、6-2 jmu-ds-单链表逆置
1、题目说明:本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表为带头结点链表。
2、设计思路:
将头节点的后一个节点不断利用头插法提前,即可实现倒置。//
while(r!= NULL)
{
q=r;
r=r->next;
q->next=L->next;
L->next=q;
}
3、代码截图:
4、pta提交记录:
刚开始将第一个函数中的r->next=s打错打成s->next=s;
3、7-1 两个有序链表序列的合并
1、题目说明:
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。
2、设计思路:
定义三个有序表L1,L2,L3;
将L1,L2中的数据存入,并比较排序//
void combine(List l1,List l2,List l3)
{
l1=l1->Next;
l2=l2->Next;
while(l1!=NULL&&l2!=NULL)
{
if(l1->data>l2->data)
{
l3->Next=l2;
l2=l2->Next;//对2个表合并排序
}
else
{
l3->Next=l1;
l1=l1->Next;
}
l3=l3->Next;
}
if(l1==NULL&&l2==NULL) return;
if(l1!=NULL)
l3->Next=l1;
else l3->Next=l2;//如果为空返回
return;
}
3、代码截图:
4、pta提交记录:
二、截图本周pta题集排名:
1、顺序表:
2、链表:
我的总分:215.
三、本周学习总结
1、谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
答: 上课前一天预习一些,但是总是有点跟不上进度,打pta时候难度有点大,总是需要别人的帮忙,以后课前会更多了解所学内容。
2、谈谈你对线性表的认识
答:线性表是n个数据元素的集合,是一种逻辑结构,不同的线性表各有各的特点。
3、代码提交总结: