<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
/**********************************************
线性表的应用----多项式操作
BY YQG.06.3.9 (网页排版较乱,可下载源码(点击右键,目标另存为))
(注:可将输入转为多项式整体输入)
***********************************************/
#include "stdio.h" #include "stdlib.h"#include"string.h"#define LENGTH sizeof(struct node)typedef struct node{ int exp; float codf; struct node*next;}Node;/***************************************** 将字串转换为链表形式******************************************/Node*transpoly(char str[]){ int length=0,flag=0,i=0; char stemp[6]={' '}; Node*head=(Node*)malloc(LENGTH),*lp,*lq=head; head->next=NULL; length=strlen(str); while(flagnext=NULL; while(str[flag]!='x') stemp[i++]=str[flag++]; flag++; /* 此时str[flag]应为'^'*/ if(str[flag++]!='^') printf("ERROR!"); lp->codf=atof(stemp); i=0; while((str[flag]!='+')&&(flagexp=atoi(stemp); lq->next=lp; lq=lp; } return head;}/******************************************* 输出链表 ******************************************/void outpoly(Node*head){ Node*lp=head->next; while(lp->next!=NULL) { if(lp->next->codf>0) printf("%.2fX^%d + ",lp->codf,lp->exp); else printf("%.2fX^%d",lp->codf,lp->exp); lp=lp->next; } printf("%.2fX^%d",lp->codf,lp->exp);/*输出最后一个结点*/}/***************************************************** 两个多项式相加*******************************************************/Node*addpoly(Node*headf,Node*heads){ Node*head=(Node*)malloc(LENGTH),*lp,*lq=head; Node*temp;/*临时结点*/ head->next=NULL; headf=headf->next; heads=heads->next; while((headf!=NULL) && (heads!=NULL))/*两个链表中有一个为空退出循 环*/ { if(headf->exp != heads->exp) { lp=(Node*)malloc(LENGTH); lp->next=NULL; temp=(headf->exp > heads->exp)? heads:headf; lp->exp=temp->exp; lp->codf=temp->codf; lq->next=lp; lq=lp; if(temp==heads) /*注意此时不能用temp=temp->next, 这将不会使heads或headf移动*/ heads=heads->next; else headf=headf->next; } else { if((headf->codf - heads->codf)!=0) { lp=(Node*)malloc(LENGTH); lp->next=NULL; lp->codf=headf->codf + heads->codf; lp->exp=headf->exp; lq->next=lp; lq=lp; } /*else continue;系数相等,且指数相等,忽略它*/ heads=heads->next; headf=headf->next; } }/*其中一个链表扫描完*/ temp=(heads==NULL)?headf:heads;/*取得没扫描完的链,因为没有在不同的 链表中切换,因此TEMP没问题*/ while(temp!=NULL) { lp=(Node*)malloc(LENGTH); lp->next=NULL; lp->codf=temp->codf; lp->exp=temp->exp; lq->next=lp; lq=lp; temp=temp->next; } return head;}void main(){ Node*head,*head1,*head2; char str[20]; printf("Input the first poly:"); gets(str); head1=transpoly(str); printf("\n"); outpoly(head1); printf("\n"); printf("Input the second poly:"); gets(str); head2=transpoly(str); printf("\n"); outpoly(head2); printf("\n"); head=addpoly(head1,head2); printf("\nthe addpoly is:"); outpoly(head); getch();}
分享到:
相关推荐
在"线性表应用-Poly多项式计算"这个项目中,通过实际的代码实现,你将深入理解如何利用数据结构来解决实际问题。它不仅锻炼了你的编程技巧,还加深了你对数据结构和算法的理解,特别是双向链表在实际问题中的应用。...
线性表实现多项式求和 在本节中,我们将讨论如何使用线性表实现多项式求和。首先,我们需要定义线性表节点的结构体,包括系数和指数两部分。然后,我们将实现初始化和销毁函数,以便更好地管理多项式。接下来,我们...
在本文中,我们将深入探讨线性表的概念、顺序表和链式表示的区别以及它们在实际应用中的优缺点。 线性表的顺序表示,也称为顺序表,是通过在内存中使用连续的存储单元来存储表中的元素。这种存储方式简化了元素的...
在这个实验报告中,线性表被应用于一元多项式的处理,如相加和相乘。 一元多项式可以用线性表来表示,每个节点存储一个项的系数和指数。在构建线性表时,节点按照指数的递增顺序排列。例如,多项式 `5x^3 + 4x^2 + ...
数据结构实验三.docx 数据结构实验三.docx是数据结构课程的一部分, experiment三主要是关于线性表实验-链式存储,使用C语言实现。...* 实验结果表明,链式存储的多项式计算器可以正确地实现多项式的基本操作。
在文件 "3-1-多项式-顺序存储.cpp" 中,可能包含了使用顺序存储结构实现多项式相加的代码。这里,两个多项式可以分别通过数组表示,通过对应位置的系数相加来得到新多项式的系数。这种方法简单直观,但需要预先知道...
在这个特定的项目中,"C#线性表相加减"是针对多项式运算的一个实现,利用链表数据结构来表示多项式,并支持多项式的相加操作。以下是关于这个项目的详细知识点: 1. **链表数据结构**:链表是一种非连续的内存存储...
本实验报告主要围绕线性表的应用,包括用顺序表和链表实现简单多项式的加减运算。实验的目标是通过C语言编程,遵循特定的算法和规范,实现多项式运算的高效处理。 1. 实现功能描述 实验要求使用顺序表和链表两种...
2. **学习利用线性表提供的接口求解实际问题**:通过具体的应用案例(如多项式的加法和乘法),学生应学会如何将理论知识转化为解决实际问题的能力。 3. **熟悉线性表的存储方法**:了解单链表、双链表、循环链表等...
### 数据结构实验报告:线性表及其应用(多项式相加、相乘) #### 实验背景与目标 在计算机科学领域,数据结构是算法设计的基础,而线性表作为最基础的数据结构之一,其理解和应用对于学习更复杂的数据结构至关重要...
### 线性表在多项式四则运算中的应用 #### 概述 线性表是一种常见的数据结构,其中的数据元素具有线性关系,每个元素都有一个直接前驱和一个直接后继,除了首尾元素外。在数学计算中,线性表常被用来表示多项式,...
在多项式相加的问题中,线性表的应用尤为关键。线性表可以用来表示一元多项式的系数,其中多项式的指数隐含在系数的顺序中。 在存储结构的选择上,有顺序存储结构和链式存储结构两种主要方式。对于简单的多项式,如...
本实验“数据结构实验线性表多项式相加”主要关注两种常见的线性表实现——数组和链表,并利用它们来解决多项式相加的问题。线性表是一种基本的数据结构,它包含一个有限的元素序列,这些元素可以是任意类型的数据。...
本文将深入探讨线性表的概念,以及如何利用它来表示和操作多项式。 线性表是一种抽象数据类型,它由有限个相同类型的元素组成,这些元素按照特定顺序排列。在实际应用中,线性表通常通过数组或链表两种方式来实现。...
在数据结构的学习中,线性表是一种...总结来说,这个实验的核心是利用线性表这一数据结构来抽象和操作数学中的多项式,通过实际的编程实现,加深了对线性表的理解,同时也展示了数据结构在解决实际问题中的应用价值。
线性表和多项式相加是计算机科学中基础的数据结构和算法问题,它们在实际编程中有着广泛的应用。本文将详细解析如何用C#语言实现线性表以及多项式的相加功能。 首先,线性表是一种基本的数据结构,它由相同类型元素...
在数据结构的学习中,理解并熟练应用线性表的这些知识点对于深入学习数据结构中的其他结构如栈、队列、串、数组以及广义表等具有重要意义。掌握线性表的特性以及顺序存储和链式存储的优缺点,对于数据结构的算法设计...
3. **多项式操作**:线性表的概念同样可以应用于多项式的表示。一元多项式可以用一个链表来表示,其中每个节点代表一个项(系数和指数)。实验要求实现多项式的创建、输出、撤销、相加和相乘操作。多项式的相加和...
5. **扩展应用**:除了加法,数据结构如线性表也可以用于实现多项式的其他操作,如减法、乘法、求导和积分。这些操作在数值分析、信号处理和机器学习等领域都有广泛应用。 通过理解和掌握如何使用数据结构实现一元...