宁夏大学数学计算机学院数据结构第二章 线性表.pptVIP

宁夏大学数学计算机学院数据结构第二章 线性表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
张乃孝 算法与数据结构——C语言描述 顺序表基本运算的实现 算法2.1 创建空顺序表 PSeqList createNullList_seq( void ) 算法2.2 顺序表的插入 int insert_seq( PSeqList palist, int p, DataType x ) 算法2.3 顺序表的删除 int delete_seq( PSeqList palist, int p ) 算法2.4 在顺序表中求某元素的下标 int locate_seq( PSeqList palist, DataType x ) 算法2.5 求palist所指顺序表中下标为p的元素值 DataType retrieve_seq( PSeqList palist,int p ) 算法2.6 判断线性表是否为空 int isNullList_seq( PSeqList palist) 算法2.2 顺序表的插入 int insert_seq( PSeqList palist, int p, DataType x ) 算法2.3 顺序表的删除 int delete_seq( PSeqList palist, int p ) 算法分析 在有n个元素的线性表里,在下标为i(第i+1个)的元素之前插入一个元素需要移动n - i 个元素;删除下标为i(第i+1个)的元素需要移动n - i - 1个元素。 如果在下标为i的位置上插入和删除元素的概率分别是Pi和Pi’, 则插入时的平均移动数是: n mi=?(n-i)pi i=0 删除的平均移动数是: n-1 md=?(n-i-1)pi’ i=0 所以顺序表的插入和删除操作的时间代价为O(n)。 类似地,在顺序表中进行定位(locate_seq)操作,则要依次与表中元素进行比较,当定位的概率平均分布在所有元素上时,一次定位平均需要和n/2个元素进行比较,其时间代价为O(n)。 ? ? 假设llist是LinkList类型的变量,它指向单链表中的第一个结点,如图2.7(a)所示。当单链表为空表时,llist的值为NULL。 为使运算简单,可以在单链表的第一个结点之前另加一个结点,称之为头结点。头结点的info字段可以存放与整个链表相关的信息(例如元素个数等),也可以不存任何信息,头结点的link字段指向第一个结点,如图2.7(b)所示。 单链表基本运算的实现 算法2.7 创建空单链表 LinkList createNullList_link( void ) 算法2.8 单链表的插入 int insert_link( LinkList llist, int i, DataType x ) 算法2.9 单链表的删除 int delete_link(LinkList llist, DataType x ) 算法2.10 在单链表中求某元素的存储位置 PNode locate_link( LinkList llist, DataType x ) 算法2.11 求单链表中下标为i的元素的存储位置 PNode find_link( LinkList llist, int i ) 算法2.12 判断单链表是否为空 int isNullList_link( LinkList llist ) 一元多项式的表示及相加 一个一元多项式Pn(x)可按升幂的形式写成: Pn(X)=P0+P1X+P2X2+P3X3+ … +PnXn 在计算机内,可以用一个线性表P来表示: P=(p0,p1,p2, …,pn) 用单链表存储多项式的结点结构如下: typedef struct Polynode { int coef; int exp; Polynode *next; } Polynode , * Polylist; /* p和q分别指向polya和polyb链表中的当前计算结点 if (p-exp q-exp) { …/*将p结点加入到和多项式中*/} else if ( p

您可能关注的文档

文档评论(0)

ormition + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档