- 博客(20)
- 收藏
- 关注
原创 线性表第11章
其中*search的移动速度是*mid的2倍。当*search指向末尾节点的时候,mid正好就在中间了。一在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点。尽管我们可以用单链表就不用静态链表了,但这样的思考方式是非常巧妙的,应该理解其思想,以备不时之需。总的来说,静态链表其实是为了给没有指针的编程语言设计的一种实现单链表功能的方法。一没有解决连续存储分配(数组)带来的表长难以确定的问题。一失去了顺序存储结构随机存取的特性。
2023-10-24 20:45:18 43
原创 线性表第10章
最后一个元素的游标必须是0!(也就是5 E 4 应该是 0 E 4)// 把它的下一个分量用来作为备用。最后一个元素的游标必须是0!
2023-10-24 20:44:42 34
原创 线性表第9章
(自己的想法:怎么将删除的游标链成一个备用链表,第一步:遍历链表,将要删除的元素数据清空,查找到对应元素,将元素赋值为0,将次元素的游标赋值给上一个元素的游标,实现删除数据,第二步,将倒数第二个未存放数据的游标赋值给刚刚删除掉的元素的游标)一数组的最后一个元素,即下标为MAXSIZE-1的cur则存放第一个有数值的元素的下标,相当于单链表中的头结点作用。一数组的第一个元素,即下标为0的那个元素的cur就存放备用链表的第一个结点的下标。一我们对数组的第一个和最后一个元素做特殊处理,他们的data不存放数据。
2023-10-24 20:44:05 36
原创 线性表的整表操作8
一顺序存储结构需要预分配存储空间,分大了,容易造成空间浪费,分小了,容易发生溢出。一若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。一单链表不需要分配存储空间,只要有就可以分配,元素个数也不受限制。一单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素。一顺序存储结构用一段连续的存储单元依次存储线性表的数据元素。·单链表在计算出某位置的指针后,插入和删除时间仅为0(1)·顺序存储结构需要平均移动表长一半的元素,时间为0(n)一若需要频繁插入和删除时,宜采用单链表结构。
2023-10-24 17:19:54 38
原创 线性表的整表创建7
那么此时的 r 就成了倒数第二的结点,新加入的 p 才是尾结点,r是指向尾结点的指针,r->next=p时你往 r 后面放了一个结点,r 是用来存放 尾结点的,因此,把新的尾巴赋值给 r,就有了 r=p,获取最新插入的尾结点。从一个空表开始,生成新结点,读取数据存放到新结点的数据域中,然后将新结点插当前链表的表头上,直到结束为止。创建单链表的过程界是一个动态生成链表的过程,从“空表”的初始状态起,依次建立各元素结点。一让L的头结点的指针指向NULL, 即建立一个带头结点的单链表;一初始化一空链表L;
2023-10-24 17:18:57 55
原创 线性表 的操作6
但如果,我们希望从第i个位置开始,插入连续10个元素,对于顺序存储结构意味着,每一次插入都需要移动n-i个位置,所以每次都是O(n)。而单链表,我们只需要在第一次时,找到第i个位置的指针,此时为0(n),接下来只是简单地通过赋值移动指针而已,时间复杂度都是0(1)再详细点分析:如果在我们不知道第i个元素的指针位置,单链表数据结构在插入和删除操作。一当i<1时,就遍历链表,让P的指针向后移动,不断指向下一个结点,j累加1;一当j<i时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1;
2023-10-24 17:17:39 30
原创 线性表的定义5
假设p是指向线性表第i个元素的指针,则该结点ai的数据域我们可以用p->data的值是一个数据的元素,结点ai的指针域可以用p->next来表示,p- >next的值是一个指针。由于这个算法的时间复杂度取决于i的位置,当i=1时,则不需要遍历,而i=n时则遍历n-1次才可以。一头结点是为了操作的统一和方便而设立的,放在第一个元素的结点之前,其数据域一般无意义也可以用来存放链表的长度)。一头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。一否则查找成功,返回结点p的数据。
2023-10-24 17:16:37 31
原创 线性表的操作4
现在链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址(指针)。线性表的链式存储结构的特点:是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位置。如果要插入和删除的位置是第一个元素,那就意味着要移动所有的元素向后或者向前,这个时间复杂度为0(n)。这就说明,它比较适合元素个数比较稳定,不经常插入和删除元素,而更多的操作是存取数据的应用。也就是说除了存储其本身的信息外,还需存储一个指示其直接后续的存储位置的信息。一可以快速地存取表中任意位置的元素。
2023-10-24 17:16:03 51
原创 线性表的顺序存储结构3
假设ElemType占用的是c个存储单元(字节),那么线性表中第i+1个数据元素和第i个数据元素的存储位置的关系是(LOC表示获得存储位置的丞数):LOC(ai+1) = LOC(ai) +c。注意,数组的长度与线性表的当前长度需要区分一下:数组的长度是存放线性表的存储空间的总长度,一般初始化后不变。·线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。一存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。一线性表的最大存储容量:数组的长度MaxSize。
2023-10-24 17:15:25 25
原创 线性表的定义2
对于不同的应用,线性表的基本操作是不同的,上述操作是最基本的,对于实际问题中涉及的关于线性表的更复杂操作,完全可以用这些基本操作的组合来实现。LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;ListEmpty(L):判断线性表是否为空表,若线性表为空,返回true,否则返回false。ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值。GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e。
2023-10-24 17:14:43 26
原创 线性表的定义1
我们就可以定义一个point的抽象数据类型,它拥有x,y,z三个整型变量,这样我们就可以方的对一个角色的位置进行操作。若将线性表记为(a1,..,ai-1,ai, ai+1, ...an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。比如1+1=2这样一个操作,在不同CPU的处理上可能不一样,但由于其定义的数学特性相同,所以在计算机编程者看来,它们都是相同的。一另外,线性表强调是有限的,事实上无论计算杌发展到多强大,它所处理的元素都是有限的。
2023-10-16 20:27:30 47 1
原创 时间复杂度和空间复杂度3
我们查找一个有n个随机数字数组中的某个数字,最好的情况是第一个数字就是,那么算法的时间复杂度为0(1),但也有可能这个数字就在最后一个位置,那么时间复杂度为0(n)。在应用中,这是一种最重要的需求,通常除非特别指定,我们提到的运行时间都是最坏情况的运行时间。S(n)=O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。接下来的那个是o(n);通常,我们都是用“时间复杂度”指运行时间的需求,是用“空间复杂度”指空间需求。当直接要让我们求“复杂度”时,通常指的是时间复杂度。
2023-10-16 20:26:45 37 1
原创 时间复杂度和空间复杂度2
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。n等于100,也就是说外层循环每执行一次,内层循环就执行100次,那总共程序想要从这两个循环出来,需要执行100*100次,也就是n的平方。·分析下,按照我们的概念“T(n)是关于问题规模n的函数”来说,我们记作0(1)就可以。根据法则,第一条没有常数项,第二条保留最高项,所以去掉n/2,第三条,去除与最高项相乘的常数也就是去掉1/2,最终得o(n^2)。
2023-10-16 20:26:02 33 1
原创 时间复杂度和空间复杂度1
事后统计方法:这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。结论:判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高项)的阶数。通过观察发现,最高次项的指数大的,函数随着n的增长,结果也会变得增长特别快。判断一个算法的好坏,只用少量的数据是不能体现出来的。1.算法采用的策略,方案。2.编译产生的代码质量。4.机器执行指令的速度。
2023-10-16 20:24:27 39 1
原创 谈谈对算法的理解
确定性:算法的每一个步骤都具有确定的含义,不会出现二义性。正确性:一算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。算法是解决特定问题求解步骤的描述,在计算机中,表现为指令的有限序列,并且每条指令表示一个或多个操作。有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。对于给定的问题,是可以有多种算法来解决的。
2023-10-16 20:23:22 193 1
原创 数据结构和算法绪论
很显然,这样说的话,链式存储结构的数据元素存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样子通过地址就可以找到相关联数据元素的位置。链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。·数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之问的大小关系和操作等相关问题的学科。2.线性结构:线性结构中的数据元素之间是一对一的关系。
2023-10-16 20:22:00 39 1
原创 c primer plus 2.1
如何在程序中写注释,创建包含多个函数的程序,发现程序的错误·什么是关键字。·函数:main()、 printf()·编写一个简单的c程序。·创建整型变量,为其赋值并在屏幕上显示其值·换行字符。
2023-10-16 20:19:45 41 1
原创 c primer plus 1.3
C使用这种分而治之的方法方便对程序进行模块化,可以独立编译单独的模块,稍后再用链接器合并已编译的模块。我们在这里描述的是最普遍的一种形式,即把源代码转换为机器语言代码,并把结果放在目标代码文件(或简称目标文件)中(这里假设源代码只有一个文件)。这两种情况所使用的硬件相同,所以目标代码相同,但是Windows和Linux所需的启动代码不同,因为这些系统处理程序的方式不同。然而,目标文件中只包含编译器为你编写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。
2023-10-15 16:51:11 41
原创 c primer plus 1.2
1987年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language (《C语言程序设计》)第1版是公认的C标准,通常称之为K&R C或经典C。特别是,该书中的附录中的“C语言参考手册”已成为实现C的指导标准。ISO C和IANSI C是完全相同的标准。随着C的不断发展,越来越广泛地应用于更多系统中,C社区意识到需要一个更全面、更新颖、更严格的标准。实际上,由于缺乏官方标准,UNIX实现提供的库已成为了标准库。
2023-10-15 16:27:15 45
原创 c primer plus1.1
应用范围:操作系统,计算机游戏,嵌入式系统,机器人工厂,足球大战电影,pc应用,计算机语言,卢卡斯公司。1972,贝尔实验室的Dennis Ritch和Ken Thompson开发Unix操作系统时设计的。计算机构成:中央处理单元(cpu),随机存取内存(ram),永久内存储存设备,外围设备。优点:强大的控制结构,快速,代码紧凑-程序更小,可移植到其他计算机。缺点:有一些莫名其妙的错误,拥有自由就必须时刻保持警惕。c++在c语言的基础上嫁接了面向对象。1.储存在计算机中的所有内容都是数字。
2023-10-15 16:11:56 35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人