第02次作业-线性表

一、PTA实验作业

题目1:6-2 线性表元素的区间删除(20 分)

1. 设计思路:

1.首先定义i,j两个变量,i用来记录数组Data[]的下标,而j用来记录在区间(minD,maxD)之中的元素个数。

2.当i=0到i=L->Las-1t时,

如果L->Data[i]>minD&&L->Data[i]<maxD,用j来记录。

不然 L->Data[i-j]=L->Data[i],i加一

最后线性表的长度减去j。返回 链表L;

2.代码截图                                                    

3.PTA提交列表说明。

解决方法:一开始没有考虑表是空表,直到提交,看到测试点才发现,在加入判断表是不是空的时候,又出现错误,经过多次的修改,才正确。

 

题目2:7-1 两个有序链表序列的合并(20 分)

1. 设计思路:

1.先定义 init(LinkList &L);//初始化链表
read(LinkList &L);//读入函数
merge(LinkList La,LinkList Lb,LinkList &Lc);//合并函数
print(LinkList L);//输出函数
这四个函数
2.定义三个指针la,lb,lc;
初始化 init(la);init(lb);init(lc);这三个链表。
用 read()函数读入数据
用merge()函数合并
输出合并的链表。
3.核心函数 void merge(LinkList La,LinkList Lb,LinkList &Lc)
定义三个指针 pa,pb,pc;
用pa指向La->next;pb指向Lb->next;
Lc指向pc,Lc指向La;
while(pa&&pb){//判断pa和pb是不是空
if(pa->data<=pb->data){//比较pa和pb的大小;
pc->next=pa;
pc=pa;
pa=pa->next;
}
else{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;//看pa和pb那个的为空,把不为空的复制到链表Lc。

2.代码截图

 

 

 

3.PTA提交列表说明。

 

解决方法:1.开始是没有理解链表的头插法,写出的代码是错误的,经过查找资料,问同学,了解头插法。才把代码改对。

题目1:6-2 jmu-ds-单链表逆置(25 分)

1. 设计思路:

void CreateList(List &L,int n)
{
定义指针 *r,*s;
int i,a;
分配内存L=new node;
r指向L;
for(i=0;i<n;i++)用尾插法来建立链表
{
scanf("%d",&a);
s=new node;
s->data=a;

r->next=s;
r=s;
}
r->next=NULL;

}
void ReverseList(List &L)
{
定义指针 *pre,*cur;
pre 指向 L->next;
L->next=NULL;
while(pre!=NULL)使用尾插法倒置链表
{
cur=pre;
pre=pre->next;
cur->next=L->next;
L->next=cur;
}

}
void PrintList(List L)
{
ListNode *p=L->next;
if(p!=NULL)
{
printf("%d",p->data);//为了满足输出格式,
p=p->next;
while(p!=NULL)
{
printf(" %d",p->data);
p=p->next;
}
}
else
printf("NULL");
}

2.代码截图

 

 

3.PTA提交列表说明。

 

 解决方法:开始是越界,导致段错误,然后用尾插法来实现,但当表为空时,就不知道怎么弄,最后用头插法,就解决了。

 

二、截图本周题目集的PTA最后排名

1.顺序表PTA排名

2.链表PTA排名

 

3.我的总分:193

三、本周学习总结

1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?

.1)编程时间:有时间就进行编码学习,尽量每天都能有所发现。但收获有点少 。

2)学习时间:周一至周五有提前预习和复习,但是还有好多不懂。

3)遇到不懂问题大部分向班级同学求救和百度搜查。但还是感觉太难了。

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

线性表中元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高。线性表这张讲链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。难度有点大。

3.代码Git提交记录截图

 

posted @ 2018-03-24 20:37  小呆俊  阅读(221)  评论(0编辑  收藏  举报
/*标题彩虹滚动字*/ #blogTitle h1 a{ background-image: -webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2), color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) ); color: transparent;-webkit-text-fill-color: transparent; -webkit-background-clip: text; -webkit-background-size: 200% 100%; -webkit-animation: maskedAnimation 2s infinite linear; -webkit-background-clip: text;-moz-background-clip: text;-ms-background-clip: text /*文字颜色变化*/ @keyframes maskedAnimation { 0% { background-position: 0 0; } 100% { background-pos