天津理工大学数据结构实验报告1
- 格式:docx
- 大小:192.17 KB
- 文档页数:9
数据结构实验一实验报告一、实验目的本次数据结构实验一的目的主要在于让我们通过实际操作,深入理解线性表的基本概念和操作方法,掌握顺序表和链表这两种常见的数据结构,并能够运用所学知识解决一些简单的实际问题。
二、实验环境本次实验使用的编程环境为具体编程环境名称,开发工具为具体开发工具名称。
三、实验内容(一)顺序表的实现与操作1、顺序表的定义顺序表是一种用一组地址连续的存储单元依次存储数据元素的线性结构。
2、顺序表的基本操作实现初始化顺序表:创建一个空的顺序表,并为其分配一定的存储空间。
插入元素:在指定位置插入新的元素。
删除元素:删除指定位置的元素。
查找元素:在顺序表中查找指定的元素,并返回其位置。
(二)链表的实现与操作1、链表的定义链表是一种通过指针将各个数据元素链接起来的线性结构。
2、链表的基本操作实现初始化链表:创建一个空的链表。
插入节点:在链表的指定位置插入新的节点。
删除节点:删除链表中指定位置的节点。
查找节点:在链表中查找指定的节点,并返回其位置。
四、实验步骤(一)顺序表的实现1、定义顺序表的数据结构使用数组来存储顺序表的元素,并记录顺序表的当前长度和最大长度。
2、实现顺序表的初始化函数分配初始的存储空间,并将长度初始化为 0 。
3、实现顺序表的插入函数首先判断插入位置是否合法,如果合法,则将插入位置之后的元素依次向后移动一位,然后将新元素插入到指定位置,并更新长度。
4、实现顺序表的删除函数首先判断删除位置是否合法,如果合法,则将删除位置之后的元素依次向前移动一位,并更新长度。
5、实现顺序表的查找函数通过遍历顺序表,逐个比较元素,找到目标元素并返回其位置。
(二)链表的实现1、定义链表的节点结构包含数据域和指针域,指针域用于指向下一个节点。
2、实现链表的初始化函数创建一个空的链表,即头节点的指针为空。
3、实现链表的插入函数根据插入位置的不同,分为在表头、表尾和中间插入三种情况。
在插入时,需要创建新的节点,并正确调整指针的指向。
实验报告static void Main(string[] args){Console.WriteLine("第̨²一°?个?C#程¨¬序¨°!ê?!ê?");Console.ReadLine();}}}2、using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace实验1.2{class Program{static void Main(string[] args){int a = 345;float b = 15.3f;bool c = true;char d = 't';string e = "12345";Console.WriteLine("int a = " + a);Console.WriteLine("float b = " + b);Console.WriteLine("bool c = " + c);Console.WriteLine("char d = " + d);Console.WriteLine("string e = " + e);//转Áa换?Console.WriteLine("\n类¤¨¤型¨ª转Áa换?\n");Console.WriteLine("\n整?型¨ª转Áa化¡¥为a长¡è整?型¨ª:êo\n");long l = a;Console.WriteLine("long l = a = " + l);3、using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace实º¦Ì验¨¦1._3{class Program{public static void swamp(ref int x,ref int y) {int temp = x;x = y;y = temp;4、using System;using System.Collections.Generic; using System.Linq;using System.Text;namespace实º¦Ì验¨¦1._4{class MainClass{public interface Body{float area();}class Cube : Body{public Cube(float x1) {a = x1;}public float a;void setA(float x){a = x;}public float area()return 6 * a * a;}}class Ball : Body{public Ball(float r1){r = r1;}float r;void setR(int r1){r = r1;}public float area(){return (float)(4 * 3.14 * r * r);}}public static float getArea(Body b){return b.area();}static void Main(string[] args){Cube c1 = new Cube(2);Ball b1 = new Ball(3);Console.WriteLine("Cube.area = " + getArea(c1));Console.WriteLine("Ball.area = " + getArea(b1)); }}}6、using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace实º¦Ì验¨¦1._6{class Program{static void Main(string[] args){//Containsstring s = "葫¨´芦?娃ªT,ê?葫¨´芦?娃ªT,ê?一°?根¨´藤¬¨´上¦?七?朵?花¡§";bool b = s.Contains("葫¨´芦?娃ªT");Console.WriteLine(b);bool c = s.Contains("");//空?字Á?符¤?串ä?也°2返¤¦Ì回?TrueConsole.WriteLine(c);bool d = s.Contains("哪?吒?");Console.WriteLine(d);//Splitstring data = "2017-4-16";string[] t = data.Split('-');foreach(string str in t)Console.WriteLine(str);//joinstring time = string.Join("/",t);Console.WriteLine(time);string s1 = "猴?哥?,";string s2 = "你?真?了¢?不?得Ì?";Console.WriteLine(string.Concat(s1, s1, s2));//IndexOfConsole.WriteLine(data.IndexOf("4"));//Copy见?牛¡ê羊¨°";string d4 = string.Copy(s3);Console.WriteLine(d4);//Clonestring s4 = "猴?哥?,ê?猴?哥?,ê?你?真?了¢?不?得Ì?";object s5 = s4.Clone();Console.WriteLine(s5.ToString());}}}五、心得体会自从上了大学也学了几门计算机语言了,感觉基础操作大同小异。
《数据结构》实验报告目录一、实验概述 (2)二、实验原理 (2)2.1 数据结构基本概念 (3)2.2 选择的数据结构类型 (4)2.3 实验原理说明 (5)三、实验步骤 (6)3.1 实验准备 (7)3.2 数据结构选择与实现 (7)3.2.1 数据结构类型选择 (9)3.2.2 数据结构实现细节 (9)3.3 实验功能实现 (10)3.3.1 功能一 (11)3.3.2 功能二 (12)四、实验结果与分析 (13)4.1 实验数据 (15)4.2 结果展示 (16)4.2.1 结果一展示 (17)4.2.2 结果二展示 (17)4.3 结果分析 (18)4.3.1 结果一分析 (19)4.3.2 结果二分析 (20)五、实验总结与讨论 (22)5.1 实验总结 (23)5.2 实验中遇到的问题及解决方法 (24)5.3 对数据结构的认识与体会 (25)5.4 对实验教学的建议 (27)一、实验概述本次实验旨在通过实际操作,加深对《数据结构》课程中所学理论知识的理解和掌握。
实验内容围绕数据结构的基本概念、常用算法以及在实际应用中的实现进行设计。
通过本次实验,学生将能够:理解并掌握线性表、栈、队列、链表、树、图等基本数据结构的特点和适用场景。
掌握常用的数据结构操作算法,如插入、删除、查找等,并能够运用这些算法解决实际问题。
学习使用C++、或其他编程语言实现数据结构的操作,提高编程能力和算法设计能力。
本次实验报告将对实验的目的、内容、步骤、结果及分析等方面进行详细阐述,旨在通过实验过程的学习,提高学生对数据结构理论知识的理解和应用能力。
二、实验原理数据结构的基本概念:介绍数据结构的基本定义,包括数据元素、数据集合、数据关系等基本概念,以及数据结构的三要素:逻辑结构、存储结构和运算。
栈和队列:介绍栈和队列的定义、特点、基本运算及其在算法设计中的重要性。
树和二叉树:讲解树的基本概念、二叉树的结构特点、遍历方法、二叉搜索树及其在数据检索中的应用。
一、实验目的1. 理解并掌握数据结构的基本概念和常用算法。
2. 学会使用C语言实现线性表、栈、队列、树和图等基本数据结构。
3. 培养动手实践能力,提高编程水平。
二、实验内容1. 线性表(1)顺序表(2)链表2. 栈(1)顺序栈(2)链栈3. 队列(1)顺序队列(2)链队列4. 树(1)二叉树(2)二叉搜索树5. 图(1)邻接矩阵表示法(2)邻接表表示法三、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 编译器:Visual Studio 20194. 实验软件:C语言开发环境四、实验步骤1. 线性表(1)顺序表1)定义顺序表结构体2)实现顺序表的初始化、插入、删除、查找等基本操作3)编写测试程序,验证顺序表的基本操作(2)链表1)定义链表结构体2)实现链表的创建、插入、删除、查找等基本操作3)编写测试程序,验证链表的基本操作2. 栈(1)顺序栈1)定义顺序栈结构体2)实现顺序栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证顺序栈的基本操作(2)链栈1)定义链栈结构体2)实现链栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证链栈的基本操作3. 队列(1)顺序队列1)定义顺序队列结构体2)实现顺序队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证顺序队列的基本操作(2)链队列1)定义链队列结构体2)实现链队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证链队列的基本操作4. 树(1)二叉树1)定义二叉树结构体2)实现二叉树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉树的基本操作(2)二叉搜索树1)定义二叉搜索树结构体2)实现二叉搜索树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉搜索树的基本操作5. 图(1)邻接矩阵表示法1)定义邻接矩阵结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接矩阵表示法的基本操作(2)邻接表表示法1)定义邻接表结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接表表示法的基本操作五、实验结果与分析1. 线性表(1)顺序表实验结果表明,顺序表的基本操作实现正确,测试程序运行稳定。
班级:姓名:学号:实验一线性表的基本操作一、实验目的1、掌握线性表的定义;2、掌握线性表的基本操作;如建立、查找、插入和删除等..二、实验内容定义一个包含学生信息学号;姓名;成绩的顺序表和链表二选一;使其具有如下功能:1 根据指定学生个数;逐个输入学生信息;2 逐个显示学生表中所有学生的相关信息;3 根据姓名进行查找;返回此学生的学号和成绩;4 根据指定的位置可返回相应的学生信息学号;姓名;成绩;5 给定一个学生信息;插入到表中指定的位置;6 删除指定位置的学生记录;7 统计表中学生个数..三、实验环境Visual C++四、程序分析与实验结果#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; // 定义函数返回值类型typedef struct{char num10; // 学号char name20; // 姓名double grade; // 成绩}student;typedef student ElemType;typedef struct LNode{ElemType data; // 数据域struct LNode *next; //指针域}LNode;*LinkList;Status InitListLinkList &L // 构造空链表L {L=struct LNode*mallocsizeofstruct LNode; L->next=NULL;return OK;}Status GetElemLinkList L;int i;ElemType &e // 访问链表;找到i位置的数据域;返回给 e{LinkList p;p=L->next;int j=1;whilep&&j<i{p=p->next;++j;}ifp||j>i return ERROR;e=p->data;return OK;}Status SearchLNode L;char str;LinkList &p // 根据名字查找{p=L.next;whilep{ifstrcmpp->;str==0return OK;p=p->next;}return ERROR;}Status ListInsertLinkList L;int i;ElemType e // 在i个位置插入某个学生的信息{LinkList p;s;p=L;int j=0;whilep&&j<i-1{p=p->next;++j;}ifp||j>i-1 return ERROR;s=struct LNode*mallocsizeofLNode;s->data=e;s->next=p->next;p->next=s;return OK;}Status ListDeleteLinkList p;int i // 删除i位置的学生信息{int j=0;whilep->next&&j<i-1{p=p->next;++j;}ifp->next||j>i-1 return ERROR;LinkList q;q=p->next;p->next=q->next;delete q;return OK;}void InputElemType *e{printf"姓名:"; scanf"%s";e->name;printf"学号:"; scanf"%s";e->num;printf"成绩:"; scanf"%lf";&e->grade;printf"输入完成\n\n";}void OutputElemType *e{printf"姓名:%-20s\n学号:%-10s\n成绩:%-10.2lf\n\n";e->name;e->num;e->grade;}int main{LNode L;LinkList p;ElemType a;b;c;d;printf"\n********************************\n\n";puts"1. 构造链表";puts"2. 录入学生信息";puts"3. 显示学生信息";puts"4. 输入姓名;查找该学生";puts"5. 显示某位置该学生信息";puts"6. 在指定位置插入学生信息";puts"7. 在指定位置删除学生信息";puts"8. 统计学生个数";puts"0. 退出";printf"\n********************************\n\n"; int x;choose=-1;whilechoose=0{puts"请选择:";scanf"%d";&choose;switchchoose{case 1:ifInitListpprintf"成功建立链表\n\n";elseprintf"链表建立失败\n\n";break;case 2:printf"请输入要录入学生信息的人数:";scanf"%d";&x;forint i=1;i<=x;i++{printf"第%d个学生:\n";i;Input&a;ListInsert&L;i;a;}break;case 3:forint i=1;i<=x;i++{GetElem&L;i;b;Output&b;}break;case 4:char s20;printf"请输入要查找的学生姓名:";scanf"%s";s;ifSearchL;s;pOutput&p->data;elseputs"对不起;查无此人";puts"";break;case 5:printf"请输入要查询的位置:";int id1;scanf"%d";&id1;GetElem&L;id1;c;Output&c;break;case 6:printf "请输入要插入的位置:";int id2;scanf"%d";&id2;printf"请输入学生信息:\n";Input&d;ifListInsert&L;id2;d{x++;puts"插入成功";puts"";}else{puts"插入失败";puts"";}break;case 7:printf"请输入要删除的位置:";int id3;scanf"%d";&id3;ifListDelete&L;id3{x--;puts"删除成功";puts"";}else{puts"删除失败";puts"";}break;case 8:printf"已录入的学生个数为:%d\n\n";x;break;}}printf"\n\n谢谢您的使用;请按任意键退出\n\n\n"; system"pause";return 0;}用户界面:(1)根据指定学生个数;逐个输入学生信息:(2)逐个显示学生表中所有学生的相关信息:(3)根据姓名进行查找;返回此学生的学号和成绩:(4)根据指定的位置可返回相应的学生信息学号;姓名;成绩:(5)给定一个学生信息;插入到表中指定的位置:(6)删除指定位置的学生记录:(7)统计表中学生个数:五、实验总结数据结构是一门专业技术基础课..它要求学会分析研究计算机加工的数据结构的特性;以便为应用涉及的数据选择适当的逻辑结构;存储结构及相应的算法;并初步掌握算法的时间分析和空间分析技术..不仅要考虑具体实现哪些功能;同时还要考虑如何布局;这次的实验题目是根据我们的课本学习进程出的;说实话;我并没有真正的读懂书本的知识;所以刚开始的时候;感到很棘手;于是又重新细读课本;这一方面又加强了对书本的理解;在这上面花费了一些心血;觉得它并不简单;是需要花大量时间来编写的....在本次实验中;在程序构思及设计方面有了较大的锻炼;能力得到了一定的提高..。
一、实验目的本次实验旨在让学生掌握数据结构的基本概念、逻辑结构、存储结构以及各种基本操作,并通过实际编程操作,加深对数据结构理论知识的理解,提高编程能力和算法设计能力。
二、实验内容1. 线性表(1)顺序表1)初始化顺序表2)向顺序表插入元素3)从顺序表删除元素4)查找顺序表中的元素5)顺序表的逆序操作(2)链表1)创建链表2)在链表中插入元素3)在链表中删除元素4)查找链表中的元素5)链表的逆序操作2. 栈与队列(1)栈1)栈的初始化2)入栈操作3)出栈操作4)获取栈顶元素5)判断栈是否为空(2)队列1)队列的初始化2)入队操作3)出队操作4)获取队首元素5)判断队列是否为空3. 树与图(1)二叉树1)创建二叉树2)遍历二叉树(前序、中序、后序)3)求二叉树的深度4)求二叉树的宽度5)二叉树的镜像(2)图1)创建图2)图的深度优先遍历3)图的广度优先遍历4)最小生成树5)最短路径三、实验过程1. 线性表(1)顺序表1)初始化顺序表:创建一个长度为10的顺序表,初始化为空。
2)向顺序表插入元素:在顺序表的第i个位置插入元素x。
3)从顺序表删除元素:从顺序表中删除第i个位置的元素。
4)查找顺序表中的元素:在顺序表中查找元素x。
5)顺序表的逆序操作:将顺序表中的元素逆序排列。
(2)链表1)创建链表:创建一个带头结点的循环链表。
2)在链表中插入元素:在链表的第i个位置插入元素x。
3)在链表中删除元素:从链表中删除第i个位置的元素。
4)查找链表中的元素:在链表中查找元素x。
5)链表的逆序操作:将链表中的元素逆序排列。
2. 栈与队列(1)栈1)栈的初始化:创建一个栈,初始化为空。
2)入栈操作:将元素x压入栈中。
3)出栈操作:从栈中弹出元素。
4)获取栈顶元素:获取栈顶元素。
5)判断栈是否为空:判断栈是否为空。
(2)队列1)队列的初始化:创建一个队列,初始化为空。
2)入队操作:将元素x入队。
3)出队操作:从队列中出队元素。
实验报告CreateLinklist(): 从键盘输入数据,创建单链表ContLinklist():将前面建立的两个单链表首尾相连OutputLinklist():输出显示单链表3)分析算法时间复杂度三、实验过程与实验结果1.一元稀疏多项式简单的计算器➢数据结构定义typedef struct PolyNode{float coef;int exp;struct PolyNode *next;}PolyNode;typedef PolyNode *Polynomial;➢算法设计思路简介用带头节点的单链表分别表示两个多项式L和p,同时新建一个链表N把两个多项式相加后的结果存放在N表中。
所有链表均按指数从小到大顺序排列。
链表N中的节点N1另外生成,把运算后的结果赋给N1,用尾部插入法将N1插入到链表N中,每次要将新节点N1插入到链表N尾部,因此给链表N声明一个尾指针N0始终指向链表N的尾节点。
操作完成,按要求输出。
➢算法描述:初始时,指针L1指向L链表的头节点,P1指向p链表的头结点,从头开始扫描两个相加多项式链表的表头节点,循环操作,直到其中一个单链表中的节点全部搜索结束为止。
比较指针L1和P1指向的指数,共有三种情况:(1)L1->exp==P1->exp;则两个多项式的系数相加减,得到的新和多项式节点插入到链表N中。
L1、P1指针后移;(2)L1->exp<P1->exp;则将该L1所指节点赋给N1插入到链表N中。
L1、P1指针后移;(3)L1->exp>P1->exp;则将该P1所指节点赋给N1插入到链表N中。
L1、P1指针后移。
➢算法的实现和测试结果:输入:L1: 5 3 6 5 6 7 0 0; L2: 2 3 3 5 4 7 0 0;输出:L1: 5x^3+6x^5+6x^7;L2: 2x^3+3x^5+4x^7;L1+L2: 7x^3+9x^5+10x^7;L1-L2: 3x^3+3x^5+2x^7➢算法时间复杂度分析该程序中建立单链表过程采用了单链表的后插入操作,其时间复杂度T(n)=O(1);当两个多项式相加减的时候,设L, p多项式分别有m、n项,其算法时间复杂度T(n)=O(m+n)。
一、实验背景随着计算机技术的飞速发展,数据结构作为计算机科学的重要基础,已经成为现代软件开发和数据处理的关键技术。
为了提高学生的数据结构应用能力,我们学校开设了数据结构实验实训课程。
本课程旨在通过实验实训,使学生深入理解数据结构的基本概念、性质、应用,掌握各种数据结构的实现方法,提高编程能力和解决实际问题的能力。
二、实验内容本次数据结构实验实训主要包括以下内容:1. 数据结构的基本概念和性质通过实验,使学生掌握线性表、栈、队列、串、树、图等基本数据结构的概念、性质和应用场景。
2. 数据结构的存储结构通过实验,使学生熟悉线性表、栈、队列、串、树、图等数据结构的顺序存储和链式存储方法,了解不同存储结构的优缺点。
3. 数据结构的操作算法通过实验,使学生掌握线性表、栈、队列、串、树、图等数据结构的插入、删除、查找、遍历等基本操作算法。
4. 数据结构的实际应用通过实验,使学生了解数据结构在各个领域的应用,如网络数据结构、数据库数据结构、人工智能数据结构等。
三、实验过程1. 实验准备在实验开始前,教师首先对实验内容进行讲解,使学生了解实验目的、实验步骤和实验要求。
同时,教师要求学生预习实验内容,熟悉相关理论知识。
2. 实验实施(1)线性表:通过实现线性表的顺序存储和链式存储,实现插入、删除、查找等操作。
(2)栈和队列:通过实现栈和队列的顺序存储和链式存储,实现入栈、出栈、入队、出队等操作。
(3)串:通过实现串的顺序存储和链式存储,实现串的插入、删除、查找等操作。
(4)树:通过实现二叉树、二叉搜索树、平衡二叉树等,实现树的插入、删除、查找、遍历等操作。
(5)图:通过实现图的邻接矩阵和邻接表存储,实现图的插入、删除、查找、遍历等操作。
3. 实验总结实验结束后,教师组织学生进行实验总结,总结实验过程中的收获和不足,提出改进措施。
四、实验成果通过本次数据结构实验实训,学生取得了以下成果:1. 掌握了数据结构的基本概念、性质和应用场景。
实验报告
CreateLinklist(): 从键盘输入数据,创建单链表
ContLinklist():将前面建立的两个单链表首尾相连
OutputLinklist():输出显示单链表
3)分析算法时间复杂度
三、实验过程与实验结果
1.一元稀疏多项式简单的计算器
➢数据结构定义
typedef struct PolyNode
{
float coef;
int exp;
struct PolyNode *next;
}PolyNode;
typedef PolyNode *Polynomial;
➢算法设计思路简介
用带头节点的单链表分别表示两个多项式L和p,同时新建一个链表N把两个多项式相加后的结果存放在N表中。
所有链表均按指数从小到大顺序排列。
链表N中的节点N1另外生成,把运算后的结果赋给N1,用尾部插入法将N1插入到链表N中,每次要将新节点N1插入到链表N尾部,因此给链表N声明一个尾指针N0始终指向链表N的尾节点。
操作完成,按要求输出。
➢算法描述:
初始时,指针L1指向L链表的头节点,P1指向p链表的头结点,从头开始扫描两个相加多项式链表的表头节点,循环操作,直到其中一个单链表中的节点全部搜索结束为止。
比较指针L1和P1指向的指数,共有三种情况:
(1)L1->exp==P1->exp;则两个多项式的系数相加减,得到的新和多项式节点插入到链表N中。
L1、P1指针后移;
(2)L1->exp<P1->exp;则将该L1所指节点赋给N1插入到链表N中。
L1、P1指针后移;
(3)L1->exp>P1->exp;则将该P1所指节点赋给N1插入到链表N中。
L1、P1指针后移。
➢算法的实现和测试结果:
输入:
L1: 5 3 6 5 6 7 0 0; L2: 2 3 3 5 4 7 0 0;
输出:
L1: 5x^3+6x^5+6x^7;L2: 2x^3+3x^5+4x^7;L1+L2: 7x^3+9x^5+10x^7;L1-L2: 3x^3+3x^5+2x^7
➢算法时间复杂度分析
该程序中建立单链表过程采用了单链表的后插入操作,其时间复杂度T(n)=O(1);当两个多项式相加减的时候,设L, p多项式分别有m、n项,其算法时间复杂度T(n)=O(m+n)。
3.单链表基本操作练习
➢数据结构定义
typedef int ElemType;
struct LNode
{
ElemType data;
struct LNode *next;
};
typedef LNode *LinkList;
➢算法设计思路简介
首先初始化两个带头结点的单链表L1,L2,要想实现两个链表的合并,可以将L2看成一个节点,将它插入到L1上即可。
第一步遍历L1链表到最后一个,然后把第二个链表的地址赋值给它的next,即可实现。
➢算法描述:
初始时,指针L1指向L1链表的头节点,令L1=L1->next,L2=L2->next,然后从头开始扫描直到L1单链表中为空,此时令L1->next=L2,即把L2链表的地址赋给了L1的next,实现合并操作。
最后通过Output 函数将合并后的链表输出,依次将链表中的data域输出即可。
➢算法的实现和测试结果:
输入:
L1: 9 6 2 4 8 2 3 6 0;
L2: 5 4 3 1 5 9 8 0;
输出:9 6 2 4 8 2 3 6 5 4 3 1 5 9 8;
➢算法时间复杂度分析
设L1链表共有n项,其循环操作就是遍历L1整个表,所以该算法时间复杂度T(n)=O(n)。
四、收获与体会
通过这次线性表的应用实验,我对于单链表的结构有了更深层次的理解,真正动手体会到怎样将查找、插入和删除这些基本操作应用在线性表中从而解决相关问题。
同时我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获。
编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。
直到最终搞清为止。
五、源代码清单
1.一元稀疏多项式简单的计算器
#include <iostream>
using namespace std;。