一元多项式加法——单链表实现
2010-06-16 21:32
369 查看
/*
* 一元多项式加法,利用单链表实现
*/
#include "stdio.h"
#include "malloc.h"
#include "conio.h"
typedef struct ListNode
{
int factor; /*多项式系数*/
struct ListNode *next; /*指向下一个节点的指针*/
} ListNode,*List;
List InitList()
{
ListNode *head,*rear,*s;
int f;
head = (ListNode *)malloc(sizeof(ListNode)); /*建立多项式的头节点*/
rear = head;
printf("Please input factor:");
scanf("%d",&f);
while(f!=-1) /*输入-1作为结束符*/
{
s = (List)malloc(sizeof(List));
s->factor=f;
rear->next=s;
rear=s;
printf("Input next factor:");
scanf("%d",&f);
}
rear->next=NULL;
return head;
}
void PloyAdd(List LA,List LB)
{
int i;
ListNode *head,*temp;
head=LA;
temp=head->next;
/*多项式相加*/
getch();
while(LA!=NULL&&LB!=NULL)
{
LA->factor=LA->factor+LB->factor;
if(LA->next==NULL&&LB->next!=NULL)
{
LA->next=LB->next;
break;
}
LA=LA->next;
LB=LB->next;
}
/*输出运算结果*/
i=0;
printf("/nThe result is:/n");
while(temp!=NULL)
{
if(!i)
printf("%d",temp->factor);
else
printf("%dX^%d",temp->factor,i);
if(temp->next!=NULL)
printf("+");
temp=temp->next;
i++;
}
free(temp);
printf("/nWell done! /n/n");
}
void main()
{
List InitList();
void PloyAdd(List LA,List LB);
List ListA,ListB;
printf("Please input ListA/n");
ListA=InitList();
printf("/nPlease input ListB/n");
ListB=InitList();
PloyAdd(ListA,ListB);
free(ListA);
free(ListB);
}
* 一元多项式加法,利用单链表实现
*/
#include "stdio.h"
#include "malloc.h"
#include "conio.h"
typedef struct ListNode
{
int factor; /*多项式系数*/
struct ListNode *next; /*指向下一个节点的指针*/
} ListNode,*List;
List InitList()
{
ListNode *head,*rear,*s;
int f;
head = (ListNode *)malloc(sizeof(ListNode)); /*建立多项式的头节点*/
rear = head;
printf("Please input factor:");
scanf("%d",&f);
while(f!=-1) /*输入-1作为结束符*/
{
s = (List)malloc(sizeof(List));
s->factor=f;
rear->next=s;
rear=s;
printf("Input next factor:");
scanf("%d",&f);
}
rear->next=NULL;
return head;
}
void PloyAdd(List LA,List LB)
{
int i;
ListNode *head,*temp;
head=LA;
temp=head->next;
/*多项式相加*/
getch();
while(LA!=NULL&&LB!=NULL)
{
LA->factor=LA->factor+LB->factor;
if(LA->next==NULL&&LB->next!=NULL)
{
LA->next=LB->next;
break;
}
LA=LA->next;
LB=LB->next;
}
/*输出运算结果*/
i=0;
printf("/nThe result is:/n");
while(temp!=NULL)
{
if(!i)
printf("%d",temp->factor);
else
printf("%dX^%d",temp->factor,i);
if(temp->next!=NULL)
printf("+");
temp=temp->next;
i++;
}
free(temp);
printf("/nWell done! /n/n");
}
void main()
{
List InitList();
void PloyAdd(List LA,List LB);
List ListA,ListB;
printf("Please input ListA/n");
ListA=InitList();
printf("/nPlease input ListB/n");
ListB=InitList();
PloyAdd(ListA,ListB);
free(ListA);
free(ListB);
}
相关文章推荐
- java单链表实现一元多项式加法和乘法运算
- 单链表实现多项式的存储和加法
- C语言:用链表实现一元多项式的加法
- 链表实现一元多项式加法
- 数据结构课程设计:顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现
- 单链表实现多项式加法的头文件(待删改)
- 一元多项式的乘法与加法运算——链表实现
- Java链表练习实现一元多项式的加法
- 顺序结构、动态链表结构下的一元多项式的加法的实现。
- 基于单链表实现一元n次多项式的创建、输出和求和操作
- 线性链表实现一元多项式的加法运算
- 一元多项式加法与乘法运算链表实现
- 用链表实现一元多项式的加法运算
- 【数据结构_链表_List_1040】一元多项式加法运算的实现
- 线性表之单链表实现一元多项式相加,求值,求导
- java实现一元多项式加法
- java链表实现一元多项式的合并同类项以及加法
- 利用单链表实现一元多项式的表示及相加
- 用单向链表实现一元多项式加法 推荐
- c++实现链式存储结构实现一元多项式的加法运算