链表建立多项式

#include<stdio.h>
#include<stdlib.h>
typedef struct  Node
{
    int xishu;
    int zhishu;
    struct Node *next;
}NoDe;
void Build(NoDe *L){
    NoDe *p,*q;
    int a,b;
    //p=(NoDe*)malloc(sizeof(NoDe));
    p=L;
    printf("请输入多项式的系数和指数以0结束\n");
    scanf("%d %d",&a,&b);
    while (a)//a!=0
    {
        q=(NoDe*)malloc(sizeof(NoDe));
        p->next=q;
        q->xishu=a;
        q->zhishu=b;
        p=p->next;
        scanf("%d %d",&a,&b);
    }
    q->next=NULL;
}
void Print(NoDe *L)//计算单链表的长度,然后输出单链表
{
 int num=0;
 NoDe *p;
 p=L->next;
 while(p)
 {
  num++;
  printf("%dx+",p->xishu);
  printf("^%d ",p->zhishu);
  p=p->next;
 }
 printf("\n长度为%d:\n",num);
}
int main(){

    NoDe *L;
    L=(NoDe*)malloc(sizeof(NoDe));
    Build(L);
    Print(L);
}
时间: 2024-11-08 17:46:19

链表建立多项式的相关文章

双链表&amp;链表合并&amp;多项式相加算法

//单链表的合并 //链表合并 //两个链表必须是有序的 #define Maxsize 5 typedef  int elemtype; typedef struct linklist { elemtype data; struct linklist *next; }Linklist; //建立链表1 Linklist *CreateList1 () { int i,data ; Linklist *head, *p, *q; head=p=(Linklist  *)malloc(sizeof

数据结构实践——链表:多项式求和

本文针对数据结构基础系列网络课程(2):线性表的实践项目. [项目 - 多项式求和] 用单链表存储一元多项式,并实现两个多项式的加法. 提示: 1.存储多项式的数据结构 多项式的通式是pn(x)=anxn+an?1xn?1+...+a1x+a0.n次多项式共有n+1项.直观地,可以定义一个数组来存储这n+1个系数.以多项式p(x)=?3.4x10?9.6x8+7.2x2+x为例,存储这个多项式的数组如下图: 可以看出,这种方案适合对某些多项式的处理.但是,在处理一些次数高但项数少的多项式时,存在

链表实现多项式相乘-数据结构学习

链表实现多项式相乘<线性表> 初学数据结构,我这个菜鸟 没看教程完全自己想. 这个题做好了好久. 不过还好总于做出来了.  先上代码,代码里有注释. 可以把注释变为cout<<注释  看一下向乘的过程. 后面再做详细的补充说明 问题描述 : 输入两个多项式,多项式的第一个数是项数.后续是两两一对,一个系数,一个指数. 多项式有序,按照系数的降序. 通过单链表实现两个多项式相乘. 输出结果多项式.同样第一项为项的个数, 后续安装指数降序排列. 要通过链表实现. 解决思路: 初始时把两

单链表实现多项式的表示及运算

单链表实现多项式的加法运算 最近学习数据结构的线性表,有顺序存储和链表两种,多项式的表示和运算,最能巩固学习成果,现在提供详细代码,来实现多项式的加法运算. 多项式用单链表最为合适,不会造成更多的资源浪费. 如果你恰好用的这本书--数据结构(Java版)(第4版)(叶核亚),推荐你去下面这个链接下载书本源代码,将更助你学的轻松. http://download.csdn.net/detail/wang______jing/9907538 1 //单链表类,实现一些基本单链表的操作 2 publi

学习笔记:单链表实现多项式相乘(一)

单链表实现多项式相乘,有这样的一个思路可以参考: 实现多项式相乘,最关键的是系数和指数的两个数据,这里命名为coef和HighPower. 最简便的办法是使用两个嵌套循环例如(3x^2+4x^1)(x^2+2x^4)用3x^2遍历另外一个括号内的数据,同时实现本身括号内的遍历. 这个想法的核心程序可归纳为以下: while(pList!=NULL){ while(pList2!=NULL){ pNew=(PNODE)malloc(sizeof(NODE)); pNew->pNext=NULL;

单向链表实现多项式加和乘--自己写数据结构

用单项链表实现多项式数据结构和代码如下(由于时间原因多项式乘法的函数没用实现,读者可以在自己完善): 存放结构体的头文件polylist.h #ifndef _H_POLYLIST_ #define _H_POLYLIST_ typedef struct _Poly_Node { int ratio; //系数 int power; //幂 struct _Poly_Node* next; }Node,*pNode; typedef struct _Poly_List { struct _Pol

链表实现多项式求和求积

#include <iostream> #include <cstdio> #include<cstdlib> using namespace std; struct Node { double coef; int expn; Node *next; }; void CreatPolynomial(Node *&head, int n) // 生成带表头结点的单链表,除头结点外另生成n个结点 { head = (Node *)malloc(sizeof(Node

17、蛤蟆的数据结构笔记之十七链表实现多项式

17.蛤蟆的数据结构笔记之十七链表实现多项式 本篇名言:"人生不是一种享乐,而是一桩十分沉重的工作."列夫托尔斯泰. 栈的应用在上面中基本覆盖了很多,接下去我们来补充下链表在多项式实现中的例子. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/46653857 1.  多项式 这个问题是符号多项式的处理问题,已经成为表处理中的一个经典例子.把每项表示为一个结点,该结点包括系数域.指数域和指向下一项的指针.类型申明如下

数据结构之利用单向链表实现多项式加法和乘法

在<数据结构与算法分析--c语言描述>一书中,作者指出了使用单向链表作为实现多项式的方法.但是没有给出具体实现.下面自己对其进行实现.只考虑功能.对其他细节不暂时不考虑.程序完成两个功能,使用单向链表完成多项式的加法和乘法.首先看加法,解决加法问题的思想在于对表示进行操作的两个链表表示的多项式按照指数递减的结构排列,每个节点的数据域存储着多项式某一项的系数(Coefficient)和指数(Exponent),还有一个指向后继节点的指针.节点的实现如下: 1 typedef struct Nod