资源描述:
《多项式的链表表示及运算-北京信息科技大学.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一多项式的链表表示及运算北京信息科技大学计算机软件基础实验报告(一)ByDade源代码:#include"stdio.h"#include"stdlib.h"structnode{//结构体类型的定义intxi;intzhi;structnode*next;};typedefstructnodeNODE;NODE*creatlink(charc)//链表的正向创建{NODE*head,*p,*s;intx,z;printf("InputPoly%c,endwith00",c);head=(NODE*)malloc(sizeof(NODE));scanf("%
2、d%d",&x,&z);p=head;while(x!=0
3、
4、z!=0){s=(NODE*)malloc(sizeof(NODE));s->xi=x;s->zhi=z;p->next=s;p=s;scanf("%d%d",&x,&z);}p->next=NULL;returnhead;}voiddel(NODE*head,inti)//链表结点的删除{NODE*p,*s;intj=0;p=head;while((p->next!=NULL)&&(jnext;j++;}if((p->next==NULL)
5、
6、(j>i-1))printf("i的
7、值不合法!");else{s=p->next;p->next=s->next;free(s);}}voidhebing(NODE*head1,NODE*head2)//将第二个链表合并于第一个链表{NODE*q1,*q2;intn=1;if(head2->next!=NULL){q2=head2->next;while(q2!=NULL){q1=head1->next;while(q1!=NULL){if(q1->zhi==q2->zhi){q1->xi=q1->xi+q2->xi;del(head2,n);q2=head2;n=0;break;}q1=q1->
8、next;}q2=q2->next;n++;}}}voidlianjie(NODE*head1,NODE*head2)//将第二个多项式链接到第一个多项式{NODE*q1,*q2;q1=head1;while(q1->next!=NULL)q1=q1->next;if(head2->next!=NULL)q1->next=head2->next;}voiddel0(NODE*head)//删除链表中系数为0的项{NODE*q1,*q2;q1=head;while(q1!=NULL){if(q1->next!=NULL)q2=q1->next;if(q1->next!
9、=NULL&&q2->xi==0){q1->next=q2->next;free(q2);break;}q1=q1->next;}}voidshow(NODE*head)//显示链表{NODE*q;printf("Thecombinedpoly:");q=head->next;while(q!=NULL){printf("%d*x(%d)",q->xi,q->zhi);q=q->next;}printf("");}main()//主函数{NODE*head1,*head2;charA,B;head1=creatlink('A');//创建第一个链表hea
10、d2=creatlink('B');//创建第二个链表hebing(head1,head2);//将第二个链表合并于第一个链表lianjie(head1,head2);//将第二个多项式链接到第一个多项式free(head2);//将第二个多项式头结点删除del0(head1);//删除链表中系数为0的项show(head1);//显示第一个链表的结果}运行结果: