精华内容
下载资源
问答
  • 数据结构多项式求和

    2019-02-01 18:49:29
    笔者用C++写的多项式求和程序,欢迎大家下载,相互学习!
  • C++实现多项式求和

    2013-11-22 21:43:49
    基本操作包括多项式的创建,多项式的显示和多项式的加减乘等运算。多项式的创建是由一个结点数组组成多项式链表。
  • c语言多项式求和

    2012-12-25 14:56:47
    这是我用c语言写的程序,我的其他资源都是免费的,是对于c语言初学者的帮助比较大的,其中有数据结构,window编程。我也在学c语言,每当我写完一个程序,我都会免费发上来。
  • 一元多项式求和。把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果。
  • 多项式求和

    2020-10-29 12:02:24
    第一行输入两个数,n(多项式最高项),x(表示具体所求多项式的值,即带入计算的值) 第二行输入n+1个数,表示多项式系数 输出:多项式结果 解决思想: 多项式求值 1.p(0)=a[n] 2.p(i)=p(i-1)*x+a[n-i] 依次迭代递归...

    问题描述:
    求解n次多项式之和;
    第一行输入两个数,n(多项式最高项),x(表示具体所求多项式的值,即带入计算的值)
    第二行输入n+1个数,表示多项式系数
    输出:多项式结果
    解决思想:

    多项式求值 
    1.p(0)=a[n]
    2.p(i)=p(i-1)*x+a[n-i]
    依次迭代递归计算
    
    样例输入:
    3 2
    1 2 3 4
    样例输出
    26
    

    AC代码(c++):

    #include<bits/stdc++.h>
    using namespace std;
    /*
    多项式求值 
    1.p(0)=a[n]
    2.p(i)=p(i-1)*x+a[n-i]
    */
    
    int n;	//最高项n 
    double a[100];	//存储数组 
    double x;	//x的值 
    
    //子多项式函数
    double f(int i){
    	if(i==0){
    		return a[n];
    	}
    	else{
    		return f(i-1)*x+a[n-i];
    	}
    } 
    
    int main(){
    	
    	cin>>n;
    	cin>>x; 
    	
    	//输入系数
    	for(int i=n;i>=0;i--){
    		cin>>a[i];
    	} 
    	double result=f(n);
    	cout<<result<<endl;
    	return 0; 
    } 
    
    展开全文
  • 数据结构课本大作业1,多项式求和的算法.
  • 稀疏多项式求和

    2021-10-22 18:07:32
    稀疏多项式求和 题目: 代码: #include <iostream> using namespace std; typedef struct PNode{ float coef; //系数 int expn; //指数 struct PNode *next; }PNode,*Polynomial; void create...

    稀疏多项式求和

    题目

    在这里插入图片描述

    代码

    #include <iostream>
    using namespace std;
    
    typedef struct PNode{
    	float coef; //系数
    	int expn; //指数
    	struct PNode *next; 
    }PNode,*Polynomial;
    
    void create(Polynomial &p,int n){
    	p=new PNode;
    	p->next=NULL;
    	PNode *r=p;
    	for(int i=0;i<n;i++){
    		PNode *s=new PNode;
    		cin>>s->coef>>s->expn;
    		s->next=NULL;
    		r->next=s;
    		r=s;
    	}
    }
    
    void add(Polynomial &pa,Polynomial &pb,Polynomial &pc){
    	PNode *p1=pa->next;
    	PNode *p2=pb->next;
    	pc=new PNode;
    	PNode *p3=pc;
    	while(p1 && p2){
    		if(p1->expn < p2->expn){
    			p3->next=p1;
    			p3=p1;
    			p1=p1->next;
    		}else if(p1->expn == p2->expn){
    			if(p1->coef + p2->coef !=0){
    				p1->coef=p1->coef + p2->coef;
    				p3->next=p1;
    				p3=p1;
    			}
    			p1=p1->next;
    			p2=p2->next;
    		}else{
    			p3->next=p2;
    			p3=p2;
    			p2=p2->next;
    		}
    	}
    	p3->next=p1?p1:p2;
    }
    
    int main(){
    	Polynomial pa,pb,pc;
    	int n1,n2; //pa,pb多项式的大小
    	cin>>n1>>n2;
    	create(pa,n1);
    	create(pb,n2); 
    	add(pa,pb,pc);
    	cout<<endl<<"pc:";
    	pc=pc->next;
    	while(pc){
    		cout<<pc->coef<<" "<<pc->expn<<"\t";
    		pc=pc->next;
    	}
    	return 0;
    }
    
    展开全文
  • c语言一元多项式求和

    千次阅读 2020-10-19 18:42:51
    一元多项式求和 比较拉跨基本实现功能,没多少注释 链表头指针不存数据合并同类项要手动 相加是比较拉跨的算法第二个链表与第一个链表中的一个循环比较,最后排序还拉跨算法也许有bug仅作参考 #include <stdio.h&...

    一元多项式求和

    比较拉跨基本实现功能,没多少注释 链表头指针不存数据合并同类项要手动 相加是比较拉跨的算法第二个链表与第一个链表中的一个循环比较,最后排序还拉跨算法也许有bug仅作参考

    #include <stdio.h>
    #include <stdlib.h> 
    
    struct List{
    	int coe;//系数 
    	int exp;//项 
    	struct List *next;
    };
    
    void ListSort(struct List *head1)
    {
    	struct List *p,*q;	
    	int temp1,temp2;
    	p = head1;
    	p = p->next;
    	while(p){
    		q = p->next;
    		while(q){
    			if(p->exp > q->exp){
    				temp1 = p->exp;
    				p->exp = q->exp;
    				q->exp = temp1;
    				temp2 = p->coe;
    				p->coe = q->coe;
    				q->coe = temp1;
    			}
    			q = q->next;		
    		}
    		p = p->next;
    	}
        
     } 
    
    void ListDelete(struct List *p,struct List *q,int i) 
    {
    	struct List *s;
    	if((p->exp == i)&&(((q->next)->exp)==i)){
    		s = q->next ;
    		q->next = s->next;
    		free(s);
    	}
    
    }
    
    void ListJoin(struct List *head1,struct List *head2) 
    {
    	struct List *p,*q,*s;
    	p = head1;
    	q = head2;
    	while(p->next){
    		p = p->next;
    	}
    	if(q->next){
    		s = q->next;
    		p->next = s;
    		free(s);		
    	}
    }
    
    int Listadd(struct List *head,int i,int data1,int data2)
    {
    	struct List *p,*s;
    	int j = 0;
    	p = head;
    	while(p && j<i-1){
    		p = p->next;
    		j++;
    	}
    	if(!p||j>i-1)
    	return 0;
    	s = (struct List*)malloc(sizeof(List));
    	s->coe = data1;
    	s->exp = data2;
    	s->next = p->next;
    	p->next = s;
    	return 1;	
    }
    
    struct List* ListCreat (void)
    {
    	int data1,data2,i,num,status=0;
    	struct List *head,*s;
    	s = (struct List*)malloc(sizeof(List));
    	s -> next = NULL;
    	head = s;
    	printf("输入一元多项式多少项;");
    	scanf("%d",&num);
    	for(i=0;i<num;i++){
    		printf("\n输入系数项数:");
    		scanf("%d%d",&data1,&data2);
    		status += Listadd(s,i+1,data1,data2);
    	}
    	if(status == num){
    		printf("CreatSuccess\n");
        }else{
        	printf("CreatFail\n");
    	}
    	return head;	
    }
    
    void ListDisplay(struct List *head)
    {
    	struct List *p;
    	p = head;
    	p = p->next;
    	while(p){		
    		printf("%dX^%d+",p->coe,p->exp);
    		p = p->next;
    	}
    	printf("\b \n");
    }
     
    struct List* ListAnd(struct List* head1,struct List* head2) //相加 
    {
    	struct List *p,*q,*s,*b;
    	int dataq1=0,dataq2=0,datap1=0,datap2=0;
    	p = head1;
    	q = head2;
    	while(p->next){
      		p = p->next;		
    		datap2 = p->exp;
    		while(q->next){
    			b = q;
    			q = q->next;
    			dataq2 = q->exp;
    			if(dataq2 == datap2){
    			p->coe += q->coe ;
    			ListDelete(p,b,dataq2);//删除已经求和的 
    			q = head2;
    			break;
    			} 
    		} 
    	}
    	ListJoin(head1,head2);//有多余的项相加
    	ListSort(head1);//排序
    	return head1;
    } 
     
    int main (void)
    {
    	struct List* head1;
    	struct List* head2;
    	struct List* head3;
    	head1 = ListCreat ();
    	head2 = ListCreat ();
    	ListDisplay(head1);
    	ListDisplay(head2);
    	head3 = ListAnd(head1,head2); 
    	ListDisplay(head3);
    	return 0;
    }
    

    后面运行效果在这里插入图片描述
    在这里插入图片描述

    展开全文
  • (数据结构与算法)一元多项式求和---单链表的应用 http://blog.csdn.net/eeeduo/article/details/37877677
  • 数据结构(C++) 一元多项式求和

    千次阅读 2019-09-29 01:06:30
    今天做了做一元多项式求和的链表实现,其中主要的思想就是一个普通的尾插法链表,主要的区别也只是有coef和exp两个数据元素了,再有就是求和实质其实就是两个链表的相加操作。 主要的思想分别有: 首先确定一条主链...

    学习链表的结尾就是一些使用链表的基本实例,比如约瑟夫环问题等。今天做了做一元多项式求和的链表实现,其中主要的思想就是一个普通的尾插法链表,主要的区别也只是有coef和exp两个数据元素了,再有就是求和实质其实就是两个链表的相加操作

    主要的思想分别有:

    • 首先确定一条主链,让主链去加第二条链,两链相加主要需要判断的就是每一项的指数大小。
    • ①如果L1的指数小于L2的指数,不需要发生变化,让主链移动到下一个元素。
    • ②如果L1的指数大于L2的指数,则L1的前一结点的next指针需要发生移动,以及带动第二条链的指针移动。
    • ③如果两个指数相等,则进行coef系数相加操作。
    • 1、如果系数相加后等于0,则进行两条链对此结点的delete操作。
    • 2、如果不为0,只需delete第二条链的结点,第一条链系数改变即可。

    结点的定义

    struct Node
    {
    	int coef;
    	int exp;
    	Node* next;
    };
    

    coef是系数,exp是指数,next是指向下一节点的指针。

    无参构造函数的实现

    Linklist()
    	{
    		Node* r = NULL, * s = NULL;
    		first = new Node;
    		r = first;
    		int coef, exp;
    		while (1)
    		{
    			cout << "请输入系数和指数:";
    			cin >> coef >> exp;
    			if (coef == 0 || exp == 0)
    				break;
    			s = new Node;
    			s->coef = coef;
    			s->exp = exp;
    			r->next = s;
    			r = s;
    		}
    		r->next = NULL;
    	}
    

    这是一个基本的尾插法构造链表的程序,我们在这里定义如果其中有一项输入为0时代表输入结束。

    重载+号运算符,实现两条链相加

    Linklist operator+(Linklist &l)
    	{
    		Node* pre = first, * p = pre->next;
    		Node* qre = l.first, * q = qre->next;
    		Node* temp = NULL;
    		while (p != NULL && q != NULL) // 保证两个结点不是空的
    		{
    			if (p->exp < q->exp) // 第一种情况,直接转移本链的指针即可
    			{
    				pre = p;
    				p = p->next;
    			}
    			else if (p->exp > q->exp) // 第二种情况
    			{
    				temp = q->next; // 设置临时的变量,储存下q->next的指针
    				pre->next = q; // 改变pre的后继为q,使主链在p结点之前再多加入一个结点
    				q->next = p; // q的后继继续接p
    				pre = q; // 以下的三个操作是对于第二条链的操作
    				q = temp;
    				qre->next = q;
    			}
    			else // 第三种情况,当指数相等时的情形
    			{
    				p->coef = p->coef + q->coef;
    				if (p->coef == 0) // 等于0时,删除p结点
    				{
    					pre->next = p->next;
    					delete p;
    					p = pre->next;
    				}
    				else
    				{
    					pre = p;
    					p = p->next;
    				}
    				qre->next = q->next;
    				delete q; // 无论什么情况,都需要把q链上的结点删除掉
    				q = qre->next;
    			}
    		}
    		if (p == NULL)
    			pre->next = q; // 还有一部操作就是如果p链空了,直接把q链上后面的结点接到p链后方,成为同一条链
    		l.first->next = NULL;
    		return *this;
    	}
    

    主要看注释

    输出函数

    	void Print()
    	{
    		Node* p = first->next;
    		if (p != NULL)                            
    			cout << p->coef << "x^" << p->exp;
    		p = p->next;
    		while (p != NULL)
    		{
    			if (p->coef > 0)
    				cout << " + " << p->coef << "x^" << p->exp;
    			else
    				cout << " + " << p->coef << "x^" << p->exp;
    			p = p->next;
    		}
    		cout << endl;
    	}
    

    这个也就是一个基本链表输出操作

    主函数测试

    int main()
    {
    	Linklist l1;
    	l1.Print();
    	Linklist l2;
    	l2.Print();
    	cout << "----------------------" << endl;
    	l1 = l1 + l2;
    	l1.Print();
    	return 0;
    }
    



    全文代码

    #include<iostream>
    using namespace std;
    struct Node
    {
    	int coef;
    	int exp;
    	Node* next;
    };
    class Linklist
    {
    	Node* first;
    public:
    	Linklist()
    	{
    		Node* r = NULL, * s = NULL;
    		first = new Node;
    		r = first;
    		int coef, exp;
    		while (1)
    		{
    			cout << "请输入系数和指数:";
    			cin >> coef >> exp;
    			if (coef == 0 || exp == 0)
    				break;
    			s = new Node;
    			s->coef = coef;
    			s->exp = exp;
    			r->next = s;
    			r = s;
    		}
    		r->next = NULL;
    	}
    	Linklist operator+(Linklist &l)
    	{
    		Node* pre = first, * p = pre->next;
    		Node* qre = l.first, * q = qre->next;
    		Node* temp = NULL;
    		while (p != NULL && q != NULL)
    		{
    			if (p->exp < q->exp)
    			{
    				pre = p;
    				p = p->next;
    			}
    			else if (p->exp > q->exp)
    			{
    				temp = q->next;
    				pre->next = q;
    				q->next = p;
    				pre = q;
    				q = temp;
    				qre->next = q;
    			}
    			else
    			{
    				p->coef = p->coef + q->coef;
    				if (p->coef == 0)
    				{
    					pre->next = p->next;
    					delete p;
    					p = pre->next;
    				}
    				else
    				{
    					pre = p;
    					p = p->next;
    				}
    				qre->next = q->next;
    				delete q;
    				q = qre->next;
    			}
    		}
    		if (p == NULL)
    			pre->next = q;    
    		l.first->next = NULL;
    		return *this;
    	}
    	void Print()
    	{
    		Node* p = first->next;
    		if (p != NULL)                            
    			cout << p->coef << "x^" << p->exp;
    		p = p->next;
    		while (p != NULL)
    		{
    			if (p->coef > 0)
    				cout << " + " << p->coef << "x^" << p->exp;
    			else
    				cout << " + " << p->coef << "x^" << p->exp;
    			p = p->next;
    		}
    		cout << endl;
    	}
    };
    int main()
    {
    	Linklist l1;
    	l1.Print();
    	Linklist l2;
    	l2.Print();
    	cout << "----------------------" << endl;
    	l1 = l1 + l2;
    	l1.Print();
    	return 0;
    }
    

    后来仔细考虑了一下这个一元多项式求和,在处理系数和指数时存在的两条链指针互调还是需要好好学习的,之前在链表的学习中是没有遇见过的,今天积累到了


    还是想继续考虑一下如果我输入的指数不是按照顺序的该咋办      (lll¬ω¬)hhh

    展开全文
  • 多项式求和(C语言)

    千次阅读 2021-01-31 19:06:37
    多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + … 现在请你求出该多项式的前n项的和。 Input 输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个...
  • 算法笔记入门篇-多项式求和

    千次阅读 2020-10-01 20:33:08
    算法笔记入门篇-多项式求和 前言 1、题目描述 2、解题思路 3、代码实现 1、题目描述 给出两个多项式的系数,求出这两个多项式的乘积。 例如,第一个多项式为f(x)=2.4x+3.2,第二个多项式为g(x)=1.5x²+0.5x。那么...
  • //两个多项式的长度 printf("请输入第一个多项式的项数:"); scanf("%d",&LA); CreatePoly(&A,LA);//因为开始声明的A是野指针,只有地址传递让其指向分配的地址空间 , //声明一个变量时操作系统会分配内存存储...
  • C++ 多项式求和

    2020-10-30 22:35:29
    多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + … 现在请你求出该多项式的前n项的和。 输入描述 每组输入数据是一个正整数n(n<1000)。 输出描述 对于每个测试实例n,要求输出多项式前n项的和。每个...
  • 多项式求和 C语言

    2020-01-28 21:58:28
    多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 现在请你求出该多项式的前n项的和。 Input 输入数据由2行组成,首先是一个正整数m(m),表示测试实例的个数,第二行包含m个正整数,对于每一个...
  • LinkList.h #ifndef LINKLIST_H_ #define LINKLIST_H_ #include<stdio.h> template<class T> struct Node { T data; struct Node<T>* next; }; template<class T>... LinkList
  • 数据结构实践——链表 多项式求和

    千次阅读 2018-11-08 01:10:41
    数据结构实践——链表 多项式求和
  • Java实现多项式求和

    2021-04-03 20:58:07
    最近老师布置的一个实验作业,要求利用流程控制结构实现多项式求和,从键盘输入一个数值。类似于 这个题目是对于考查流程控制中的循环嵌套使用的灵活性以及对循环的掌握情况。 public static void main(String[]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,135
精华内容 4,854
关键字:

多项式求和