集美大学课程实验报告-实验2:线性表
集美大学课程实验报告-实验2:线性表
项目名称 | 实验2:线性表 |
---|---|
课程名称 | 数据结构 |
班级 | 网安2413 |
指导教师 | 郑如滨 |
学生姓名 | 林沁茹 |
学号 | 202421336067 |
实验项目名称 | 实验2:线性表 |
上机实践日期 | |
上机实践时间 | 2学时 |
一、目的(本次实验所涉及并要求掌握的知识点)
-掌握头插法和尾插法建链表
-熟悉new的用法
-掌握链表区间的删除
二、实验内容与设计思想
以下请根据实际情况编写
题目1:区间删除
函数相关伪代码
建立函数
L = new List;
L.length<-n;
while i<n then
|cin>>L->data[i];
|i++;
end
删除元素
while(L.data[i])then
|if(L.data[i]<min||L.data[i]>max)then
||L.data[m]<-L.data[i];
||m++;
|end
|i++;
end
输出元素
if(L.length==0)
|cout<<"线性表为空!";
else
|cout<<L.data[i];
|i++;
|while(i<L.length)then
|| cout<<" "<<L->data[i];
|| i++;
end
函数代码
void CreateList(SqList& L, int n) {
L = new List;
L->length = n;
int i = 0;
while (i < n) {
cin >> L->data[i];
i++;
}
}
void DelNode(SqList& L, int min, int max) {
int i = 0, m = 0;
while (L->length > i) {
if (L->data[i]<min || L->data[i]>max) {
L->data[m] = L->data[i];
m++;
}
i++;
}
L->length = m;
}
void DispList(SqList L) {
int i = 0;
if (L->length == 0) {
cout << "线性表为空!";
}
else {
cout << L->data[i];
i++;
while (i < L->length) {
cout << " " << L->data[i];
i++;
}
}
}
时间复杂度O(n),空间复杂度O(n)
题目2:头插法或尾插法创建链表
函数相关伪代码
创建链表
L=new LNode;
L->next=NULL;
for(i=0;i<n;i++)then
|LinkList p= new LNode;
|cin>>p.data;
|p.next=L.next;
|L.next=p;
end
输出链表
LinkList p=L->next;
if(p==NULL)
|cout<<"空链表!";
else
|cout<<p->data;
|p=p->next;
|while(p)then
||cout<<" "<<p->data;
||p=p->next;
end
函数代码
void CreateListF(LinkList& L, int n) {
int i = 0;
L = new LNode;
L->next = NULL;
for (i = 0;i < n;i++) {
LinkList p = new LNode;
cin >> p->data;
p->next = L->next;
L->next = p;
}
}
void DispList(LinkList L) {
LinkList p = L->next;
if (p == NULL) {
cout << "空链表!";
}
else {
cout << p->data;
p = p->next;
while (p) {
cout << " " << p->data;
p = p->next;
}
}
}
时间复杂度O(n),空间复杂度O(n)
题目3:单链表逆置
函数相关伪代码
LinkList p=L.next;
L.next=NULL;
while(p)then
|LinkList s=new LNode;
|s.data=p.data;
|s.next=L.next;
|L.next=s;
|p=p.next;
end
函数代码
void ReverseList(LinkList& L) {
LinkList p = L->next;
L->next = NULL;
while (p) {
LinkList s = new LNode;
s->data = p->data;
s->next = L->next;
L->next = s;
p = p->next;
}
}
时间复杂度O(n),空间复杂度O(n)
三、实验使用环境(本次实验所使用的平台和相关软件)
以下请根据实际情况编写
- 操作系统:Windows 11专业版
- 编程语言:C++
- 开发工具:[Visual Studio 2022]
四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)
题目1:区间删除
本机运行截图
PTA提交截图
题目2:头插法或尾插法创建链表
本机运行截图
PTA提交截图
题目3:单链表逆置
本机运行截图
PTA提交截图
五、实验小结(实验中遇到的问题及解决过程、实验体会和收获)
遇到的问题及解决方法:
- 问题:代码在pta上可以运行,在vs上不可以。
- 解决方法:修改代码。
实验体会和收获:
- 学会了如何借助ai解决代码问题。
- 掌握了基本的代码调试方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步