集美大学课程实验报告-实验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提交截图


五、实验小结(实验中遇到的问题及解决过程、实验体会和收获)

遇到的问题及解决方法:

  1. 问题:代码在pta上可以运行,在vs上不可以。
  • 解决方法:修改代码。

实验体会和收获:

  • 学会了如何借助ai解决代码问题。
  • 掌握了基本的代码调试方法。

六、附件(参考文献和相关资料)

posted @   穗和  阅读(15)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示