Data Structure
liyuan_35023
这个作者很懒,什么都没留下…
展开
-
Data Structure(1)---线性表
线性表的定义 线性表(List):零个或多个数据元素的有限序列。 Key Point: 序列,即元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个无后继,其他每个元素都有且只有一个前驱和后继。 有限,线性表强掉是有限的。 线性表元素的个数为n(n>=0)定义为线性表的长度,当n=0时,称为空表。 称i为数据元素ai的在线性表中的位序。 线性表的抽象数据类型原创 2015-10-29 17:12:22 · 371 阅读 · 0 评论 -
Data Structure(1-7)---单链表的整表删除
单链表整表删除的算法思路如下: 声明一结点p和q; 将第一个结点赋值给p; 循环:将下一结点赋值给q; 释放p; 将q复制给p。 实现代码:Status ClearList (LinkList *L) { LinkList p,q; p=(*L)->next; /*p指向第一个结点*/ while (p) /*没到表尾*/ {原创 2015-12-09 19:16:37 · 419 阅读 · 0 评论 -
Data Structure(1-8)---单链表结构与顺序存储结构优缺点
存储分配方式 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素。 单链表采用链式存储单元存放线性表的元素。 时间性能 查找:顺序存储结构O(1) 单链表O(n) 插入和删除: 顺序存储结构平均需要移动表长一半的元素,时间为O(n) 单链表为O(1) 空间性能 顺序存储结构需要预分配存储空间,分大了,浪费,分小了易发生上溢 单链表不需要分配存储空间,只要有就可以分配,元素个数不受限制。 结论:原创 2015-12-09 19:35:42 · 701 阅读 · 0 评论 -
Data Structure(1-2)---线性表的顺序存储结构
线性表有两种物理结构:顺序存储结构与链式存储结构 顺序存储定义:线性表的书序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。 线性表顺序存储结构代码:#define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; /*用数组存储数据元素*/ int length;原创 2015-12-02 17:06:13 · 591 阅读 · 0 评论 -
Data Structure(2)---算法时间复杂度
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)时问题规模n的某个函数。 这样用大写O()来体现算法时间复杂度的记法,我们称之原创 2015-12-02 15:04:57 · 372 阅读 · 0 评论 -
Data Structure(1-3)---线性表的链式存储结构
单链表为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据ai来说,除了储存其本身的信息外,还需要储存一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称为指针或链。这两部分信息组成数据元素ai的存储映像,称为节点(Node)。 n个节点链接成一个链表,即线性表(a1,a2,…,an)的链式原创 2015-12-04 20:19:53 · 664 阅读 · 0 评论 -
Data Structure(1-5)---单链表的插入与删除
单链表的插入假设存储元素e的结点为s,要实现结点p、p->next和s之间的逻辑关系变化,只需将结点s插入到结点p和p->next之间即可。s->next=p->next; p->next=s;算法思路(单链表第i个数据插入结点): 声明一指针p指向链表头结点,初始化j从1开始; 当 j < i 时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1; 若到链表末尾p为空,则说明第i个结点不原创 2015-12-08 11:15:45 · 365 阅读 · 0 评论 -
Data Structure(1-4)---单链表的读取
对于单链表,实现获取第i个元素的数据的操作GetElem,在算法上,相对要麻烦一些。 算法思路(获取第i个数据): 声明一个指针p指向链表的第一个结点,初始化j从1开始; 当j < i 时,就遍历链表,让p的指针向后移动,不断指向下个结点,j累加1; 若到链表末尾p为空,则说明第i个结点不存在; 否则查找成功,返回结点p的数据。 /*用e返回L中第i个数据元素的值*/ Status GetElem(原创 2015-12-07 18:53:44 · 313 阅读 · 0 评论 -
Data Structure(1-6)---单链表的整表创建
单链表的创建过程就是一个动态生成链表的过程。即从“空表”的初始化状态起,依次建立各元素结点,并逐个插入链表。 单链表整表创建的算法思路: 声明一指针p和计数器变量i; 初始化一空链表L; 让L的头结点的指针指向NULL,即建立一个带头结点的单链表; 循环:生成一新结点赋值给p; 随机生成一数字赋值给p的数据域p->data; 将p插入到头结点与前一新结点之间。 /*随机产生n个元素的值,建立带头结点原创 2015-12-09 17:10:41 · 429 阅读 · 0 评论