第二次作业-线性表

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、代码提交总结:

 

posted on 2018-03-24 20:57  MAP;E  阅读(277)  评论(1编辑  收藏  举报