17、蛤蟆的数据结构笔记之十七链表实现多项式

17、蛤蟆的数据结构笔记之十七链表实现多项式

本篇名言:“人生不是一种享乐,而是一桩十分沉重的工作。”列夫托尔斯泰。

栈的应用在上面中基本覆盖了很多,接下去我们来补充下链表在多项式实现中的例子。

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/46653857

1.  多项式

这个问题是符号多项式的处理问题,已经成为表处理中的一个经典例子。把每项表示为一个结点,该结点包括系数域、指数域和指向下一项的指针。类型申明如下:

typedefstruct
linklist

{

intcoef;//系数

intexp; //指数

struct linklist*next;

}nodelink;

2.  基本算法

从两个链表开始比较多项式的各个项,如果相同则相加,如果不相同,则备份高指数的,以此类推。

3.  Main函数

主函数如下,创建两个多项式,得到如下图所示:

void main()

{

nodelink*heada,*headb,*headc;

heada=create();

printhead(heada);

headb=create();

printhead(headb);

headc=ADD(heada,headb);

printf("相加后的的链表为:\n");

printhead(headc);

}

如下图1所示:

4.  源码

#include<stdio.h>

#include<malloc.h>

typedefstruct
linklist

{

intcoef;//系数

intexp; //指数

struct linklist*next;

}nodelink;

nodelink *create()//创建单链表

{

nodelink*head,*s,*t;

intc,e;

head=(nodelink*)malloc(sizeof(nodelink));//哨兵头结点

head->next=NULL;

t=head;//始终指向单链表的尾部

printf("请输入c和e的值,当系数e等于-1为结束条件:\n");

scanf("%d%d",&c,&e);

while(e!=-1)

{

s=(nodelink*)malloc(sizeof(nodelink));

s->coef=c;

s->exp=e;

s->next=NULL;

t->next=s;

t=s;

printf("请继续输入c和e的值,当系数e等于-1为结束条件:\n");

scanf("%d%d",&c,&e);

}

returnhead;

}

void printhead(nodelink *head)//输出连表数据

{

nodelink*phead;

intpcount=1;//结点计数器

phead=head->next;//指向第一个元素结点

while(phead!=NULL)

{

printf("第%d个结点的系数和指数分别为:",pcount);

printf("%2d%4d\n",phead->coef,phead->exp);

phead=phead->next;

pcount++;

}

printf("\n");

}

nodelink *ADD(nodelink *heada,nodelink
*headb)//实现多项式相加

{

nodelink*p,*q,*prea,*preb,*temp;

intsum;

p=heada->next;//分别使p和q指向第一个元素结点

q=headb->next;

prea=heada;

free(headb);//释放headb链表的头结点

while(p!=NULL&&q!=NULL)

{

if(p->exp>q->exp)

{

prea=p;

p=p->next;

}

else if(p->exp==q->exp)

{

sum=p->coef+q->coef;

if(sum!=0)

{

p->coef=sum;

preb=q;

prea=p;

p=p->next;

q=q->next;

free(preb);

}

else//如果和为零

{

temp=p;

p=p->next;

prea->next=p;

free(temp);

preb=q;

q=q->next;

free(preb);

}

}

else //若p->exp大于q->exp

{

temp= q->next;

prea->next=q;

q->next=p;

q= temp;

}

}

if(q!=NULL)

prea->next=q;

return heada;

}

void main()

{

nodelink*heada,*headb,*headc;

heada=create();

printhead(heada);

headb=create();

printhead(headb);

headc=ADD(heada,headb);

printf("相加后的的链表为:\n");

printhead(headc);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-17 03:52:29

17、蛤蟆的数据结构笔记之十七链表实现多项式的相关文章

47. 蛤蟆的数据结构笔记之四十七的有向无环图的应用排序

47.蛤蟆的数据结构笔记之四十七的有向无环图的应用排序 本篇名言:"君子喻于义 ,小人喻于利. -- 孔丘" 接下去来看下有向无环图. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47110397 1.  有向无环图 一个无环的有向图称做有向无环图(directedacycline praph).简称DAG图.DAG 图是一类较有向树更一般的特殊有向图,图1给出了有向树.DAG图和有向图 有向无环图是描述含有公共

37. 蛤蟆的数据结构笔记之三十七图的概念

37. 蛤蟆的数据结构笔记之三十七图的概念 本篇名言:"宿命论是那些缺乏意志力的弱者的借口.--罗曼? 罗兰" 又到了一个新概念,这次咱们来看 这个图,图一看给人一种凌乱的感觉.那么它在数据结构中又是什么呢? 欢迎转载,转载请标明出处: 1.  图的概念 图(graph)是一种比线性表.树更为复杂的数据结构.在线性表中,数据元素之间呈线性关系,即每个元素只有一个直接前驱和一个直接后继.在树型结构中,数据元素之间有明显的的层次关系,即每个结点只有一个直接前驱,但可有多个直接后继,而在图结

17. 蛤蟆的数据结构进阶十七排序实现之归并排序

17. 蛤蟆的数据结构进阶十七排序实现之归并排序 本篇名言:"人生不是一种享乐 ,而是一桩十分沉重的工作.-- 列夫 . 托尔斯泰" 我们来看下归并排序. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47790163 1.  归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个

18、蛤蟆的数据结构笔记之十八链表实现稀疏矩阵

18.蛤蟆的数据结构笔记之十八链表实现稀疏矩阵 本篇名言:"必须如蜜蜂一样,采过许多花,才能酿出蜜来." 上篇中实现了栈在多项式实现中的例子,再来看下稀疏矩阵通过链表方式实现. 关键字:十字链表存储 欢迎转载,转载请标明出处: 1.  十字链表存储 十字链表(OrthogonalList)是有向图的另一种链式存储结构.该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的.用十字链表来存储有向图,可以达到高效的存取效果.同时,代码的可读性也会得到提升. 为便于理解后续代码,从网上摘了

19、 蛤蟆的数据结构笔记之十九链表实现等价类寻找

19. 蛤蟆的数据结构笔记之十九链表实现等价类寻找 本篇名言:"人生有两出悲剧:一是万念俱灰,另一是踌躇满志." 继续来看下通过链表存储实现等价类寻找. 欢迎转载,转载请标明出处: 1.  等价类 等价类(Equivalenceclass)在数学中,给定一个集合 X 和在 X 上的一个等价关系 ~,则 X 中的一个元素 a 的等价类是在 X 中等价于 a 的所有元素构成的集合: a= { X ; X ~ a } 2.  实现 输入一个size,然后初始化out和seq数组. 然后输入数

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先 本篇名言:"生活真象这杯浓酒 ,不经三番五次的提炼呵 , 就不会这样一来可口 ! -- 郭小川" 继续看下广度优先的遍历,上篇我们看了深度遍历是每次一个节点的链表是走到底的. 欢迎转载,转载请标明出处:http://write.blog.csdn.net/postedit/47029275 1.  原理 首先,从图的某个顶点v0出发,访问了v0之后,依次访问与v0相邻的未被访问的顶点,然后分别从这些顶点出发,广度优先遍历,直至所有的

48. 蛤蟆的数据结构笔记之四十八的有向无环图的应用关键路径

48. 蛤蟆的数据结构笔记之四十八的有向无环图的应用关键路径 本篇名言:"富贵不淫贫贱乐 ,男儿到此是豪雄.-- 程颢" 这次来看下有向无环图的另一个应用关键路径. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47135061 1.  关键路径 与AOV-网相对应的是AOE-网(Activity On Edge)即边表示活动的网.AOE-网是一个带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表

41 蛤蟆的数据结构笔记之四十一图的遍历之深度优先

41  蛤蟆的数据结构笔记之四十一图的遍历之深度优先 本篇名言:"对于我来说 , 生命的意义在于设身处地替人着想 , 忧他人之忧 , 乐他人之乐. -- 爱因斯坦" 上篇我们实现了图的邻接多重表表示图,以及深度遍历和广度遍历的代码,这次我们先来看下图的深度遍历. 欢迎转载,转载请标明出处: 1.  原理 图遍历又称图的遍历,属于数据结构中的内容.指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次.图的遍历操作和树的遍历操作功能相似.图的遍历是图的一种基本操作,图的许多其它

33. 蛤蟆的数据结构笔记之三十三广义表实现二

33. 蛤蟆的数据结构笔记之三十三广义表实现二 本篇名言:" 希望是附丽于存在的,有存在,便有希望,有希望,便是光明.--鲁迅" 我们继续来看下广义表的其他代码实现.代码均来自网络,解释来自蛤蟆,均亲测可行. 欢迎转载,转载请标明出处: 1.  广义表实现二 1.1         main 创建两个链表的指针head和L. 输入一个字符串,调用GLCreate函数创建广义表.显示,获取头表,尾表,输出长度,深度,原子个数,复制列表,Merge列表,遍历,比较广义表操作. 如下图1: