博客作业2---线性表

Posted 爻象

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博客作业2---线性表相关的知识,希望对你有一定的参考价值。

一、PTA实验作业

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

设计思路

定义整型变量i作为循环变量,j用来储存所删除节点的个数
for (i小于顺序表长度时执行循环)
  if(顺序表中第i个数大于Mind且小于MAXd)
       j++
  否则L->Data[i-j]=L->Data[i];
  i++
L->Last-=j;

代码截图

PTA提交列表说明

本题第一次提交时用了while循环语句,结果编译器判定是段错误,后来改为for循环时提交答案正确。

题目2:6-2 jmu-ds-单链表逆置

设计思路

void CreateList(List &L,int n){
	if(n==0){          判断输入n是否为零 
		printf("NULL");
		exit;若是0 则输出NULL并退出
	}
	定义链表指针 s,r
	定义整型变量i作为循环数x用来储存要写入链表的数;
	L=(ListNode * )malloc(sizeof(ListNode));链表初始化
	让r指向头节点
	for(i<n时执行循环){
		s=(ListNode * )malloc(sizeof(ListNode));
		输入数并储存在x中;
		把x中的数写进;链表
		r->next=s;
		r=s;
	}
	r->next=NULL;
}
void ReverseList(List &L){
	定义链表指针p,q,r
	if(表为空) return;
	p=L->next;p,q分别指向L 与q的下一个节点
	q=p->next;
	p->next=NULL;
	while(q指向节点不为空执行循环){
		r=q->next;
		q->next=p;逆置链表
		p=q;
		q=r;
	} 
	L->next=p;
}
void PrintList(List L){输出链表
	ListNode *p=L->next;
	while(p!=NULL){
		if(p->next==NULL){
			printf("%d",p->data);
		}
		else{
		printf("%d ",p->data);}
		p=p->next;
	}
}

代码截图


PTA提交列表说明

本题第一次提交时是因为输出函数格式不正确而导致答案错误,加上并没有判断输入的n是否合理所以错了,后来经过修改改正

题目3:7-3 两个有序序列的中位数

设计思路

struct mdian{创建结构体
    int num;
};
创建结构体数组 str[200005];
bool compBySize(struct mdian a,struct mdian b){
    return a.num<b.num;}
int main(){
    定义整型变量n来记录数据
    输入整数存于n
    定义整型变量i作为为外层计数器
    for(i<2n时执行循环){
        输入整数存于结构体数组;
    }
    sort(str,str+2*n,compBySize);//排序
    printf("%d",str[n-1]);按顺序输出数组
    return 0;
}

代码截图

PTA提交列表说明

本题用链表处理比较麻烦,于是巧妙地运用了数组,算是一点小偷懒了= =
所以除了前两次提交编译器没选好出现了编译错误
其他地方没有什么大的错误

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

1.顺序表PTA排名

2.链表PTA排名

3.我的总分:

200

三、本周学习总结

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

其实本周自己对于时间的安排不是特别好,这学期学到数据结构明显比较吃力了,所以平时做作业也不是特别积极,导致本周的作业都是堆到最后几天来做的,所以自己很不满意,以后要养成经常打代码的习惯,作业尽量提早做,平时经常复习,提高自己对代码的熟练度。

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

线性表是最基本、最简单、也是最常用的一种数据结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。
除此之外还有很多东西有待学习,而且我对线性表研究的也不是很透彻,以后补充。

四、阅读代码



作者仅仅用不到100行代码就实现了双向链表。
包括以下功能:
1. 添加节点
2. 删除节点
3. 取得头节点
4. 取得尾节点
5. 取得下一个节点
6. 取得上一个节点
7. 链表是否为空的判断
8. 取得链表节点个数
而且代码很清晰 可读性很高 很值得学习

以上是关于博客作业2---线性表的主要内容,如果未能解决你的问题,请参考以下文章

博客作业2---线性表

博客作业2---线性表

博客作业02---线性表

博客作业2---线性表

博客作业2---线性表

博客作业2---线性表