合并两个单链表练习,多项式合并

来源:互联网 发布:sql server 2008安装 编辑:程序博客网 时间:2024/05/21 22:25

用节点node表示多项式的系数和次数,编程合并两个链式表达的多项式。


思路:先初始化两个单链表,然后将单链表的系数相加,如果一个单链表结束,将next节点直接指向不空的单链表,最后输出结果。


// multinomial.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <malloc.h>#include <Windows.h>typedef struct Node{int iXishu;int iCishu;struct Node *next;}muti,*pmuti;pmuti injoin(pmuti phead1,pmuti phead2){pmuti phead3 = (Node*)malloc(sizeof(Node));pmuti p1 = (Node*)malloc(sizeof(Node));pmuti p2 = (Node*)malloc(sizeof(Node));pmuti prear = (Node*)malloc(sizeof(Node));p1 = phead1->next;p2 = phead2->next;phead3 = prear ;while(true){if(p1 == NULL || p2 == NULL){break;}pmuti pNow = (Node*)malloc(sizeof(Node));pNow->iXishu = p1->iXishu + p2->iXishu;pNow->iCishu = p1->iCishu;p1 = p1->next;p2 = p2->next;prear->next =pNow;prear = pNow;}prear->next = NULL;if (p1 != NULL){prear->next = p1;}else if (p2 != NULL){prear->next = p2;}return phead3;}int _tmain(int argc, _TCHAR* argv[]){muti *phead1=(Node*)malloc(sizeof(Node));muti *phead2=(Node*)malloc(sizeof(Node));muti *prear=(Node*)malloc(sizeof(Node));muti *pNew=(Node*)malloc(sizeof(Node));int i  = 0,j=0,iMax;prear = phead1 ;printf("第一个链表,输入最大次数\n");scanf("%d",&iMax);for(i;i<iMax+1;i++){printf("x^%d项前的系数",i);scanf("%d",&j);pNew=(Node*)malloc(sizeof(Node));pNew->iXishu = j;pNew->iCishu = i;pNew->next = NULL;prear->next = pNew;prear = pNew;}prear = phead2 ;printf("第二个链表,输入最大次数\n");scanf("%d",&iMax);i = 0;for(i;i<iMax+1;i++){printf("x^%d项前的系数",i);scanf("%d",&j);pNew=(Node*)malloc(sizeof(Node));pNew->iXishu = j;pNew->iCishu = i;pNew->next = NULL;prear->next = pNew;prear = pNew;}pmuti phead3 = injoin(phead1,phead2);pmuti prear3 = (Node*)malloc(sizeof(Node));i=0;prear3 = phead3->next;while(prear3 != NULL){//prear3 = phead3->next;printf("合并后的x^%d项前的系数%d\n",i,prear3->iXishu);prear3 = prear3->next;i++;}system("pause");return 0;}


原创粉丝点击