随笔分类 - 数据结构与算法
摘要:当我们需要两个栈的存储数据的时候,可能会出现其中一个栈不够用,另外一个栈又不经常使用的情况,可以试着把两个栈合体。这是一种策略,在日常生活中也有类似的情况,比如情侣,有的情侣毕业了还是分开住,有的情侣可能会想一起租房子不是更好嘛,他好,我也好。 共享栈的表示 typedef int Elemtype
阅读全文
摘要:定义 栈是一种限定仅在表尾进行插入或删除操作的线性表。允许插入或删除的一端为栈顶,另一端为栈底。特点是先进后出( first in last out )。栈的插入操作叫做入栈,栈的删除操作叫做出栈。 结构表示 typedef int Elemtype; typedef struct { Elemty
阅读全文
摘要:普通单链表就像一条巷子走到底,而循环链表就像巷子末尾有个传送门,把你又带回巷子开始的地方。普通单链表最后一个节点指向空,循环链表的最后一个节点指向头结点。 数据集的表示和单链表一样 typedef struct list { int data; struct list *next; } List;
阅读全文
摘要:在学完线性表之后,总结一下顺序表的优缺点 优点 无须为元素之间的逻辑结构增添额外的储存空间,自成一体。 随机存取,十分方便。 缺点 空间利用率不高,容易造成“碎片”。 插入删除操作需要移动大量的元素。 当线性表的长度变化较大时,难以确定储存空间的容量。 而单链表可以很好的弥补顺序表的这些缺点。 一、
阅读全文
摘要:/* 使用C语言实现 */ 顺序表有两种实现方式 1、静态数组 #define Size 100; typedef struct { Elemtype data[Size]; int length; }List; 静态数组实现的方式比较简单,涉及的问题较少,可以参考动态分配的操作过程。 2、动态分配
阅读全文
摘要:衡量算法效率的两种方法 事后分析法 事前分析法(估算) 1、事后分析法 使用计算机内部的计时器功能(节拍),但是有些算法可能运行下来,也不足一个节拍,故可以采用多次运行的策略,达到预期的效果。 缺点 必须先多次运行依据算法编制的程序 时间统计量依赖于计算机的软硬件环境 2、事前分析法 与算法执行时间
阅读全文