- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构定义——指互相有关联的数据元素的集合,用D_S=( D, S ) 数据结构内容——数据的逻辑结构、存储结构和运算 算法效率指标——时间效率和空间效率 数据结构课程的内容 第2章 线性表 第3章 字符串 第4章 栈和队列 一、教学内容:1、 线性表的定义和性质及基本运算;2、 线性表的顺序存储结构3、 线性表的链式存储结构4、 多项式的代数运算 二、教学要求:1、了解线性表的逻辑结构特性,以及线性表的两种存储实现方式2、熟练掌握两种存储结构的描述方法。链表是本章的重点和难点。3、熟练掌握顺序表的定义与实现,包括查找、插入、删除算法的实现;4、熟练掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构;5、能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。 2.1 线性表的逻辑结构 例1 分析26 个英文字母组成的英文表 ( A, B, C, D, …… , Z) 线性表的特征 对于非空的线性表: 有且仅有一个开始结点a1,没有直接前趋,有且仅有一个直接后继a2; 有且仅有一个终结结点an,没有直接后继,有且仅有一个直接前趋an-1; 其余的内部结点ai(2≤i≤n-1)都有且仅有一个直接前趋ai-1和一个ai+1。 线性表顺序存储特点: 1. 逻辑上相邻的数据元素,其物理上也相邻; 2. 若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组下标)。计算方法是(参见存储结构示意图): 设首元素a1的存放地址为LOC(a1)(称为首地址), 设每个元素占用存储空间(地址长度)为L字节, 则表中任一数据元素的存放地址为: LOC(ai) = LOC(a1) + L *(i-1) LOC(ai+1) = LOC(ai)+L 线性表的顺序存储结构示意图 例1 一个一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。存储器按字节编址,设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是 初始化 Status InitList (SqList L) { L.elem=(ElemType*)malloc(MAXSIZE* sizeof(ElemType)) If(! L.elem) exit(OVERFLOW); L.length= 0; return(OK); } 实现步骤: 将第i +1至第n 位的元素向前移动一个位置; 表长减1。 注意:事先需要判断,删除位置i 是否合法? 假定在表中任意位置插入、删除元素都是等概率的, 插入概率p(i)=1/(n+1) ,删除概率q(i)=1/n ,则: 本节小结 链表的特点: 用一组任意的存储单元存储线性表的数据元素 利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素 每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息 结点 数据域:元素本身信息 指针域:指示直接后继的存储位置 概念:空指针,语法用“NULL”;头指针 与链式存储有关的术语: 何谓头指针、头结点和首元结点? 例: 1. 单链表的建立和输出 2. 单链表的修改 3. 单链表的插入 4. 单链表的删除 5. 应用举例 6. 其它链表形式 建立带头结点的单链表 Void CreateList_L(LinkList L,int n) L=(LinkList) malloc(sizeof(Lnode)); L-next=NULL; for(i=n;i0;--i){ p=(Linklist)malloc (sizeof(Lnode)); scanf(p-data); p-next=L-next;L-next=p; 1. 单链表的建立和输出 实例:用单链表结构来存放26个英文字母组成的线性表(a,b,c,…,z),请写出C语言程序。 将全局变量及函数提前说明: #includestdio.h #includestdlib.h typedef struct liu{char data; struct liu*next;} Lnode, *LinkList; Lnode *p,*q,*head; //一般需要3个指针变量 int n ; // 数据元素的个数 int m=sizeof(Lnode); /*结构类型定义好之后,每个变量的长度就固定了,m求一次即可*/ void build() //字母链表的生成。要一个一个慢慢链
您可能关注的文档
最近下载
- 2023-2024学年江苏省苏州市高二(上)期中数学试卷【答案版】.docx VIP
- 经导管主动脉瓣置换术的护理课件.pptx VIP
- 三级医院评审应急预案系列10感染性病原体职业暴露应急预案附流程图.pdf VIP
- 2021高考数学常见题型解法归纳《第31招 解三角形题型的解法》.pdf VIP
- JCT478.2-2013 建筑石灰试验方法 第2部分 化学分析方法.docx VIP
- 设计方案人物专访——设计方案师贾峰云.pdf VIP
- 《现代教育技术》 电子教案6 教学设计.pptx VIP
- 基本医疗保险定点药店知识培训课件.docx VIP
- 高校篮球专项课教案(最全).doc VIP
- 财务职员述职报告格式7篇.docx VIP
原创力文档


文档评论(0)