数据结构链表实验报告
集美大学课程实验报告-实验2:线性表
| 项目名称 | 内容 |
|---|---|
| 课程名称 | 数据结构 |
| 班级 | 网安2411 |
| 指导教师 | 郑如滨 |
| 学生姓名 | 于鸿硕 |
| 学号 | 202421336018 |
| 实验项目名称 | 实验2:线性表 |
| 上机实践日期 | |
| 上机实践时间 | 2学时 |
一、目的(本次实验所涉及并要求掌握的知识点)
-
学习链表的创建方法 学习链表的逆置、插入和删除功能
二、实验内容与设计思想
#include <iostream>
using namespace std;
return 0
题目1:头插法或尾插法创建链表
函数代码
//头插法:
void CreateListF(LinkList &L,int n)
{
L=new LNode;
L->next=nullptr;
int inputdata;
for(int i=0;i<n;i++)
{
cin>>inputdata;
LNode* newNode=new LNode;
newNode->data=inputdata;
newNode->next=L->next;
L->next=newNode;
}
}
//尾插法:
void CreateListR(LinkList &L, int n)
{
L=new LNode;
L->next=nullptr;
LNode *tail=L;
int inputdata;
for(int i=0;i<n;i++)
{
cin>>inputdata;
LNode *newNode=new LNode;
newNode->data=inputdata;
newNode->next=nullptr;
tail->next=newNode;
tail=newNode;
}
}
//输出链表:
void DispList(LinkList L)
{
LNode* current=L->next;
int a=0;
while (current!=nullptr)
{
a=1;
cout<<current->data;
if(current->next!=nullptr)
{
cout<<" ";
}
current=current->next;
}
if(a==0)cout<<"空链表!";
}
**题目2:链表逆置*:
void ReverseList(LinkList &L)
{
LNode *prev = nullptr;
LNode *curr = L->next;
LNode *next = nullptr;
while (curr != nullptr)
{
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
L->next = prev;
}
题目3:有序链表的插入与删除:
void ListInsert(LinkList &L,ElemType e)
{
LNode *pre=L;
LNode *p=L->next;
while(p!=nullptr&&p->data<e)
{
pre=p=p;
p=p->next;
}
LNode *newNode=new LNode;
newNode->data=e;
newNode->next=p;
pre->next=newNode;
}
void ListDelete(LinkList &L,ElemType e)
{
LNode *pre=L;
LNode *p=L->next;
while (p!=nullptr&&p->data!=e)
{
pre = p;
p = p->next;
}
if(p!=nullptr)
{
pre->next=p->next;
delete p;
}
else
{
cout<<e<<"找不到!"<<endl;
}
}
三、实验使用环境(本次实验所使用的平台和相关软件)
以下请根据实际情况编写
- 操作系统:Windows 11
- 编程语言:C++
- 开发工具:visual studio2022 &pintia
- 编译器:g++
四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)
题目1:头插法和尾插法运行截图
本机运行截图
PTA提交截图
题目2:链表逆置运行截图:
题目3:有序链表的插入与删除:
五、实验小结(实验中遇到的问题及解决过程、实验体会和收获)
遇到的问题及解决方法:
在删除链表元素这题中,链表全删情况需要在最后输出“空链表”,但我在编写代码中通过在删除函数中加入验证temp=null时会重复输出n次,而如果要实现只输出一次,按照我的理解应该要在displist函数里加入相关代码,但强加该函数会导致编译错误,该问题尚未解决
实验体会和收获:
学习了链表的两种创建方式,学习了有序链表的插入和删除元素,学习了链表通过迭代逆置的方法
浙公网安备 33010602011771号