云大数据结构课程教学课件第2章线性表51.ppt

云大数据结构课程教学课件第2章线性表51.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
云大数据结构课程教学课件第2章线性表51

在c语言中,顺序表用一维数组描述: typedef int datetype; #define maxsize 1024; typedef struct { datatype data[maxsize]; int last; } sequenlist; 顺序表的描述: 存放结点信息 指示线性表的 最后一个位置 a1 a2 . . . an Maxsize-1 (*l).last 0 1 单链表的存储结构描述如下: typedef int datatype; typedef struct node {datatype data; struct node *next; } linklist; linklist *head, *p; a1 a2 an ..... ^ head 作业: 2.5 2.6 * 数据结构 * 第一次上机题目 在顺序表上实现线性表的插入操作,要求生成顺序表时,从键盘上读取元素. 2.单循环链表的特点:链表尾结点的next域不为空,而是指向头结点或开始结点。显然对单循环链表,从任一结点开始,均可找到其前趋和后继结点。 引入单循环链表的目的在于方便一些运算的实现。 实用中常采用尾指针单循环链表,而不是头指针单循环链表。 2.3.3 单循环链表 1.循环链表:是一种首尾相接的链表 单循环链表 多循环链表 WHY? * 数据结构 * 2.3.3 单循环链表 例2.4 采用单循环链表实现两个线性表A和B链成一个 线性表的运算. a1 a2 an ..... ra b1 b2 bm ..... rb p=ra-next; ra-next=rb-next-next; free(rb-next); rb-next=p; 保存表la的头结点地址 链表lb的开始结点链到链表la的终结点之后 例2.5 :采用单循环链表存储一元多项式,并实现一元多项式的加法 n次多项式: F(x)=a0+a1x+a2x2+…+anxn 系 数 指 数 指 针 coef exp next 结点格式: 2.3.3 单循环链表 结点类型说明:typedef struct pnode {float coef; int exp; struct pnode *next; } polynode; 算法要点:对指数相同的项,将其系数相加,若和不为零,则构成“和多项式”的一项,将所有指数不相同的项复制到“和多项式”中。 * 数据结构 * 2.3.3 单循环链表 算法描述: polynode *polyadd( a,b) /*A,B是两个多项式*/ polynode *a,*b; { polynode *ptr,*q,*q1,*q2; float x; q1=a; q2=b; q=malloc(sizeof(polynode)); q?coef=0; q ?exp=-1; q ?next=q; ptr=q; q1=q1 ?next; q2=q2 ?next; C表初始化, 申请头结点 while((q1!=a)(q2!=b)) { if (q1?exp==q2 ?exp) { x=q1 ?coef+q2 ?coef; if (x!=0){ q ?next=malloc(sizeof(polynode));

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档