C语言双向链表实现多项式,数据结构-第4次第二章线性表(双向链表多项式).ppt

数据结构-第4次第二章线性表(双向链表多项式)

2.3.3 双向链表 双向链表(Double linked list):在单链表的每个结点里再增加一个指向其直接前趋的指针域prior。这样就形成的链表中有两个方向不同的链,故称为双向链表。形式描述为: struct DuLNode{ datatype data; DuLNode *prior,*next; }; 结点 存储前趋结点 的地址 存储数据元素 存储后继结点 的地址 指针域 数据域 指针域 双链表一般由头指针唯一确定的,将头结点和尾结点链接起来构成循环链表,并称之为双向链表。 设指针p指向某一结点,则双向链表结构的对称性可用下式描述: p—>prior—>next=p=p—>next—>prior L (c)非空的双向循环链表 (b)空的双向循环链表 L p a b c 双向链表结点p前的插入数据x的操作: p q x ai-1 ai q= new DuLNode; q->data=x; q->prior=p->prior; q->next=p; p->prior->next=q; p->prior=q; 双向链表结点p前的插如数据x的操作: p q x q= new DuLNode; q->data=x; q->prior=p->prior; q->next=p; p->prior->next=q; p->prior=q; ai-1 ai 双向链表结点p前的插如数据x的操作: p q x ai-1 ai q= new DuLNode; q->data=x; q->prior=p->prior; q->next=p; p->prior->next=q; p->prior=q; ai+1 ai p–>prior–>next=p–>next; p–>next–>prior=p–>prior; delete p; p 删除p指针所指的结点: ai-1 ai+1 ai p–>prior–>next=p–>next; p–>next–>prior=p–>prior; delete p; p 删除p指针所指的结点: ai-1 ai+1 ai p–>prior–>next=p–>next; p–>next–>prior=p–>prior; delete p; p 删除p指针所指的结点: ai-1 双向链表的插入、删除灵活;链表维护的工作量大,所需的存储空间较大。 2.4 一元多项式的表示及相加 一、一元多项式的表示 多项式的操作是表处理的典型用例。数学上,一元多项式可按升幂写成: 在计算机中,可以用一个线性表来表示: P = (p0, p1, …,pn) 但是对于形如 S(x) = 1 + 3x10000 – 2x20000 的多项式,上述表示方法是否合适? 一般情况下的一元稀疏多项式可写成 Pn(x) = p1xe1 + p2xe2 + ┄ + pmxem 其中:pi 是指数为ei 的项的非零系数, 0≤ e1 < e2 < ┄ < em = n 可以下列线性表表示: ((p1, e1), (p2, e2), ┄, (pm,em) ) P999(x) = 7x3 - 2x12 - 8x999 例如: 可用线性表 ( (7, 3), (-2, 12), (-8, 999) ) 表示 ADT Polynomial { 数据对象: 数据关系: 抽象数据类型一元多项式的定义如下: D={ ai | ai ∈TermSet, i=1,2,...,m, m≥0 TermSet 中的每个元素包含一个 表示系数的实数和表示指数的整数 } R1={ |ai-1 ,ai∈D, i=2,...,n 且ai-1中的指数值<ai中的指数值 } CreatPolyn ( &P, m ) DestroyPolyn ( &P ) PrintPolyn ( &P ) 基本操作: 操作结果:输入 m 项的系数和指数, 建立一元多项式 P。 初始条件:一元多项式 P 已存在。 操作结果:销毁一元多项式 P。 初始条件:一元多项式 P 已存在。 操作结果:打印输出一元多项式 P。 PolynLength( P ) AddPolyn ( &Pa, &Pb ) SubtractPolyn ( &Pa, &Pb ) 相减操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值