
好的,在了解了结构之后,我们来介绍链接列表. 首先,作为比较,让我们回顾一下结构数组ah,就像我们前面说的,结构数组,是的,这是一种非常常用的数据结构,但是ah结构链表,结构数组有一个明显的缺点. 例如,对于我们刚刚定义的结构数组,那么在结构数组中有三个元素,然后,在将这个结构数组存储在内存中时,这三个元素在内存中按顺序排列. 这种存储方法有一个缺点. 例如,当我们要存储第一个元素和第一个元素时,在两个元素之间插入元素时,假设有另一个学生,他的学生编号为125,他的名字为Jenny,那么如果我们要插入此元素学生迈克,如果是汤姆,那是很麻烦的. 为什么?因为为了保持发射的顺序,我们必须随后将汤姆和杰克全部向后移动. 为了给詹妮腾出足够的空间,这样的操作实在太费劲了,于是,与这个数据结构相比,有一个数据结构可以解决这样的问题,这非常方便,例如,让我们来看一下,这样一个结构,此结构与现在的结构略有不同,也就是说,我们使用指针将原始的3个结构变量连接到该结构,即在主体后面的第一个结构中,添加一个指向下一个的指针结构,然后在第二个结构之后,添加一个指向下一个结构的指针,依次连接,然后以这种方式,我们可以按顺序保存要保存的那些结构,它们之间的连接很灵活. 例如,当我们想在MIke和Tom之间插入一个Jenny时,我们可以这样做,让Mike指向新来的Jenny,然后让Jenny指向Tom后面的这个人,然后通过这种方式,我们可以珍妮进入整个队列,好吧,我们可以看到,这种数据结构在处理这种情况方面比结构数组有很大的优势,因此,这种数据结构称为链接列表,好. 接下来,让我们首先介绍什么是链接列表. 每个链表都有很多部分要构建. 首先,它是一个链表头,也就是这个头. 它实际上是一个指针. ,它用于指向链表中的第一个元素,然后结构链表,下一个是链表节点,链表节点通常包含两部分,第一部分用于存储数据,例如在此链表中列表中,123 Mike用于存储数据,啊,133 Tom用于存储数据. 第二部分是指向下一个节点的指针,即下一个节点的地址,然后在链表的末尾,我们使用NULL指针指示这是链表的末尾,然后通过该指针简介,我们可以看到,链表实际上是一个非复杂的数据结构,对,但是它是一种非常常用的数据结构. 实际上,在我们的课堂上,我们没有故意引入许多数据结构,因此在本课程的最后一部分,我们将链表作为理解并介绍给所有人,嗯,如果您想使用它的话在程序中,您可以随意使用它. 好的,那么,让我们首先介绍链接列表的创建和操作. 让我们看一下如何创建链接列表. 然后我们可以看到一个链表实际上是由许多节点组成的. 而且,这些节点可以根据我们的需要随时添加,也就是说,链表实际上可以动态创建,也就是说,我们可以根据需要创建具有相应数量节点的链表. 为了能够动态创建链表,我们首先来看一下如何动态申请内存空间,然后在这里,我们介绍两个非常常用的运算符,一个是new,另一个是delete,new运算符是用于打开相应的存储空间,然后,返回该存储空间的起始地址,然后删除,它释放由指针指向的存储空间,然后在新建之后,给出要创建的存储空间,请使用放置什么类型的数据,并且可以在此数据类型之后添加括号以写入此数据空间的初始值,当然,您也可以不写入此初始值,然后传递此值. 这样,您可以创建存储用于存储此类数据的空间,以及此类表示离子可以返回指向该存储空间的地址. 例如,在这里,我们使用new返回的指针,将指针变量pint初始化,即pint指向刚生成的This memory space,这是new的用法,非常非常简单,您只需要在new之后添加类型符号,当然,如果要释放此内存空间,它也非常简单,只要将其删除,将此指针写到后面,那么它是相同的,我们也可以使用new,申请一块空间来存储一个由4个整数组成的小数组,那么此表达式还将返回一个地址. 我们可以使用该地址来初始化一个指针. 当然,如果要释放此内存空间,则可以使用这样的表达式来释放它. 删除后有一个[],表示以后要释放的指针指向数组的某个区域,好吧,这是两个用于动态应用和释放内存空间的运算符,new和delete的基本用法当然,毫无疑问,我们可以使用new和delete动态地应用和释放结构类型空间,然后我们可以在表上使用它,例如,对于我们之前定义的结构类型,student,好,在这里为了使您更简洁,我进一步简化了这个学生结构,只保留了一个id,然后第二部分是一个指向学生类型的指针,然后有了这样的结构,我们可以使用这种方式来申请存储学生类型的空间,例如,我首先定义一个指向学生类型的指针,然后,我可以新建学生,这样,我获得了一块用于存储学生类型变量的存储空间,然后,分配这块存储空间的地址给头,然后用这种方式,我们可以h,动态创建一个链表,好的,接下来让我们看一下如何逐渐创建一个链表,然后创建一个链表,我们从第一个节点开始,使用new,申请一个学生类型的存储空间,并分配一个值,然后,我们定义一个指向它的head指针,然后可以这样编写相应的程序,head = new student,同时,为了创建后续节点,我们定义一个临时指针temp指向新创建的Node,相应的程序是student * temp = head,接下来,我们需要决定是否继续创建一个新节点,如果要创建一个新节点,然后当然,我们首先要申请一个相应的存储区域,然后,我们必须使用刚刚定义的指针,让它的下一个指向下一个节点,这就是说,要建立此关联,然后是相应的程序,即temp-> next =新学生,因此,我们同时需要分配值进入该学生的数据部分. 创建此节点后,为了继续创建后续节点,我们需要将该温度向前移动一个节点,以便温度指向新创建的节点,因此在移动之后,它变成这样,然后是相应的程序,只是温度= temp->接下来,然后在创建此节点之后,我们将返回第二步做出决定,是否创建一个新节点,然后如果您要创建一个新节点,那么我们将再次运行这几个程序,然后相应地,我们将创建一个节点,并使用temp指针,让前一个节点指向该节点,然后在该temp指针之后,向前移动一次,然后在移动temp之后,再次指向新创建的节点,再次返回到temp2以确定是否创建一个新节点,假设此时我们不需要创建新Node,则需要将最后一个节点的next指针设置为null,即temp-> next = null,然后在执行完成之后,结果是这样的,然后到此步骤,链接d列表我们已经完成了,因此此程序可以代表创建链接列表的过程. 啊,在这里,我写了一封信,这个函数叫做创建,它将返回一个指针,啊,然后这个指针实际上代表了链表的头节点,所以在这里,我给出的程序与我们刚才提到的程序相同讨论过. 过程是相同的,因此我们在这里不再重复.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-207822-1.html
这回得一起收拾美狗们