第一题:6-3 jmu-ds- 顺序表删除重复元素
1、题目:
设计一个算法,从顺序表中删除重复的元素,并使剩余元素间的相对次序保存不变。
- 输入格式: 第一行输入顺序表长度。 第二行输入顺序表数据元素。中间空格隔开。
- 输出格式:数据之间空格隔开,最后一项尾部不带空格。
- 输出删除重复元素后的顺序表。
- 你需要实现的函数有下面三个:
函数接口定义:
void CreateSqList(List &L,int a[],int n); //创建顺序表 void DispSqList(List L);//输出顺序表 void DelSameNode(List &L) ;//删除顺序表重复元素
L
:顺序表a
:输入数组n
:输入数据个数
2、代码截图:
3、设计思路:
主要功能函数DelSameNode
定义变量 i , j ,k分别在循环是用做记录,来控制循环结束。
for i=0 to L->length-1 i++{
for k=i+1 to L->length k++{
if(L->data[i]==L->data[k])//如果data i 跟data k 相等 for j=k to L->length j++
L->data[j]=L->data[j+1]即为 此项被删除后面的每一位元素都向前移了一位
4、PTA提交列表说明:
第二题: jmu-ds-链表倒数第m个数(20 分
1、题目:
6-3 jmu-ds-链表倒数第m个数(20 分)
已知一个带有表头节点的单链表,查找链表中倒数第m个位置上的节点。
- 输入要求:先输入链表结点个数,再输入链表数据,再输入m表示倒数第m个位置。
- 输出要求,若能找到则输出相应位置,要是输入无效位置,则输出
-1
。
结构体定义:
typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; //指向后继结点 } LNode,*LinkList;
要求实现函数为:
函数接口定义
int Find(LinkList L, int m );
L
:单链表m
:倒数第m个位置
2、代码截图:
3、设计思路:
int Find(LinkList L, int m )//的函数中
{
LinkList q=L;
L=L->next;//L指向L->next
int a,n;//用其他变量控制循环
循环(while(L){n++; L=L->next;})
4、PTA提交列表说明:
第三题:7-1 两个有序链表序列的合并(20 分)
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL
。
2、代码截图:
3、设计思路:
定义三个有序表L1,L2,L3
比较s1->data与s2->data的大小如果s1<s2则
r->next-s1
r=r->next
s1=s1->next
否则相反
r即为合并后的新表
二、截图本周题目集的PTA最后排名
1、顺序表PTA排名
2、链表PTA排名
3、我的总分:194
PTA总分在150-200分:1.5分
三、本周学习总结
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
2.谈谈你对线性表的认识?
答:
a.线性表是n个数据元素的有限集合
b.他存在唯一的一个被叫做“第一个”的数据元素,存在唯一的一个被叫做“最后一个”的数据元素。
c.线性表是一个动态的线性数据结构,他的长度可以在运行时根据需要增加或者缩短。
d.线性表有顺序表,单链表,双向链表,循环链表,静态表
3.代码Git提交记录截图
在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。
来源:https://www.cnblogs.com/lk2291539780/p/8641404.html