数据结构 课件 链表应用与变形.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构 课件 链表应用与变形.ppt》由会员分享,可在线阅读,更多相关《数据结构 课件 链表应用与变形.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、链表应用与变形数据结构电子教案数据结构电子教案1第二章第二章 线性表线性表n多项式多项式n循环链表循环链表n双向链表双向链表2 2单链表的应用n多项式存储3 3多项式多项式 (Polynomial)n nn阶多项式阶多项式 Pn(x)有有 n+1 项项。u 系数系数 a0,a1,a2,anu 指数指数 0,1,2,n。按升幂排列按升幂排列4 4第三种第三种:struct term /多项式的项定义 float coef;/系数 int exp;/指数;static term termArraymaxTerms;/项数组 static int free,maxTerms;/当前空闲位置指针a0
2、a1 a2 ai ame0 e1 e2 ei emcoefexp0 1 2 i m5 5两个多项式存储的例子两个多项式存储的例子 A(x)=2.0 x1000+1.8 B(x)=1.2+51.3x50+3.7x101 两个多项式存放在两个多项式存放在termArray中中A.start A.finish B.start B.finish freecoefexp1.8 2.0 1.2 51.3 3.7 0 1000 0 50 101 maxTerms6 6n多项式顺序存储表示的缺点多项式顺序存储表示的缺点u插入和删除时项数可能有较大变化,因此插入和删除时项数可能有较大变化,因此要移动大量数据要移
3、动大量数据u不利于多个多项式的同时处理不利于多个多项式的同时处理n采用多项式的链表表示可以克服这类困难:采用多项式的链表表示可以克服这类困难:u多项式的项数可以动态地增长,不存在存多项式的项数可以动态地增长,不存在存储溢出问题。储溢出问题。u插入、删除方便,不移动元素插入、删除方便,不移动元素。多项式的链表存储表示多项式的链表存储表示7 7n在多项式的链表表示中,每个结点三个数据在多项式的链表表示中,每个结点三个数据成员:成员:n通过链接指针,可以将多项式各项按指数递通过链接指针,可以将多项式各项按指数递增的顺序链接成一个单链表。增的顺序链接成一个单链表。n在此结构上,新项的加入和废项的删除执
4、行在此结构上,新项的加入和废项的删除执行简单的链表插入和删除操作即可解决。简单的链表插入和删除操作即可解决。多项式的链表结构多项式的链表结构coef exp link Data Term8 8多项式表示法14328100a.poly.first148-3101060b.poly.first9 9多项式类定义struct Term/all members of Terms are public by defaultintcoef;/coefficientintexp;/exponentTerm Set(int c,int e)coef=c;exp=e;return*this;classPolyn
5、omialprivate:Chain poly;1010两个多项式的相加算法两个多项式的相加算法设两个多项式都带表头结点,检测指针设两个多项式都带表头结点,检测指针pa和和pb分别指示两个链表当前检测结点,并设结分别指示两个链表当前检测结点,并设结果多项式的表头指针为果多项式的表头指针为C,存放指针为存放指针为pc,初始位置在初始位置在C的表头结点。的表头结点。当当pa和和pb没有检测完各自的链表时,比较当没有检测完各自的链表时,比较当前检测结点的指数域:前检测结点的指数域:指数不等:小者加入指数不等:小者加入C链,相应检测指针链,相应检测指针pa或者或者pb进进1;指数相等:对应项系数相加。
6、若相加结果指数相等:对应项系数相加。若相加结果不为零,则结果加入不为零,则结果加入C链,链,pa与与pb进进1。11 11CH.poly.firstAH.poly.firstBH.poly.first 1 01 0-1 4-1 4-3 63 6-9 10-9 107 127 128 148 14多项式链表的相加多项式链表的相加AH=1-3x6+7x12BH=-x4+3x6-9x10+8x14CH=1-x4-9x10+7x12+8x141212AH.firstBH.first CH.first1 0-1 4-3 63 6-9 107 128 14papcpb 1313AH.first CH.fi
7、rst 1 01 0-1 4-3 63 6-9 107 128 14papbpcBH.first1414AH.first CH.first 1 01 0-1 4-1 4-3 63 6-9 107 128 14papbpcBH.first1515AH.first CH.first 1 01 0-1 4-1 4-3 63 6-9 107 128 14papbpcBH.firsttmp=-3+3=01616AH.first CH.first1 01 0-1 4-1 4-3 63 6-9 107 128 14papc-9 10pbBH.first 1717AH.first CH.first1 01 0
8、-1 4-1 4-3 63 6-9 107 128 14papc-9 10pbBH.first7 12 1818AH.first CH.first1 01 0-1 4-1 4-3 63 6-9 107 128 14papc-9 10pbBH.first7 128 14 p1919当当pa或或pb指针中有一个为指针中有一个为NULL,则把另一则把另一个链表的剩余部分加入到个链表的剩余部分加入到C链。链。void Add(Polynomal&A,Polynomal&B,Polynomal&C)/友元函数:两个带表头结点的按升幂排列的/多项式链表的头指针分别是 A.first 和 B.first,/
9、返回的是结果多项式链表 C.Term*pa,*pb,*pc,*p,temp;float sum;pc=C.poly.first;/结果链尾指针 pa=A.poly.first-link;/A链检测指针 pb=B.poly.first-link;/B链检测指针 while(pa!=NULL&pb!=NULL)2020 if(pa-exp=pb-exp)/对应项指数相等 sum=pa-coef+pb-coef;if(fabs(sum)0.001)temp.set(sum,pa-exp);pc=C.poly.InsertAfter(temp);pa=pa-link;pb=pb-link;else i
10、f(pa-exp exp)/pa指数小 temp.set(pa-coef,pa-exp);pc=C.poly.InsertAfter(temp);pa=pa-link;else /pb指数小temp.set(pb-coef,pb-exp)pc=C.poly.InsertAfter(temp);pb=pb-link;2121 p=(pa!=NULL)?pa:pb;/p指示剩余链 while(p!=NULL)temp.set(p-coef,p-exp);pc=C.poly.InsertAfter(temp);p=p-link;2222template struct CircLinkNode/链表结
11、点类定义 T data;CircLinkNode*link;CircLinkNode(CircLinkNode*next=NULL)link=next;CircLinkNode(T d,CircLinkNode*next=NULL)data=d;link=next;bool Operator=(T x)return data=x;bool Operator!=(T x)return data!=x;带表头结点的循环链表类的定义带表头结点的循环链表类的定义2323template /链表类定义class CircList private:CircLinkNode*first,*last;/头指针
12、,尾指针public:CircList(const T x);/构造函数CircList(CircList&L);/复制构造函数CircList();/析构函数 int Length()const;/计算链表长度bool IsEmpty()return first-link=first;/判表空否CircLinkNode*getHead()const;/返回表头结点地址2424 void setHead(CircLinkNode*p);/设置表头结点地址 CircLinkNode*Search(T x);/搜索CircLinkNode*Locate(int i);/定位 T*getData(i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件 链表应用与变形 应用 变形
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内