[单链表]多项式乘法

《数据结构与算法分析 C语言描述》表,栈与队列部分课后习题

//Code by Pnig0s1992
//Date:2012,3,22  

#include <stdio.h>
#include "Header.h"  

void MultPolynomial(LinkList Py1,LinkList Py2,LinkList LinkRc);
void PrintfPolynomial(LinkList LinkRs);
int main(int argc,char **argv)
{
    LinkNode Ploy1;
    Ploy1.pNext = NULL;
    Insert(0,6,&Ploy1);
    Insert(1,5,&Ploy1);
    Insert(2,4,&Ploy1);
    Insert(3,3,&Ploy1);  

    LinkNode Ploy2;
    Ploy2.pNext = NULL;
    Insert(0,10,&Ploy2);
    Insert(1,9,&Ploy2);
    Insert(2,8,&Ploy2);
    Insert(3,7,&Ploy2);
    LinkNode LinkResult;  

    LinkResult.pNext = NULL;
    MultPolynomial(&Ploy1,&Ploy2,&LinkResult);
    printf("\nPoly1:");
    PrintfPolynomial(&Ploy1);
    printf("\nPloy2:");
    PrintfPolynomial(&Ploy2);
    printf("\nThe Multi result:");
    PrintfPolynomial(&LinkResult);
    system("pause");
    return 0;
}
//打印多项式乘法结果
void PrintfPolynomial(LinkList LinkRs)
{
    LinkList LinkTemp = LinkRs->pNext;
    while(LinkTemp != NULL)
    {
        printf("+%dX^%d",LinkTemp->Coefficient,LinkTemp->Exponent);
        LinkTemp = LinkTemp->pNext;
    }
}  

void MultPolynomial(LinkList Py1,LinkList Py2,LinkList LinkRc)
{
    int iTempExp = 0;
    int iTempCoe = 0;
    LinkList LinkPy1 = Py1->pNext;
    LinkList LinkPy2 = Py2->pNext;  

    while(LinkPy2 != NULL)
    {
        LinkPy1 = Py1->pNext;//每次循环回置头结点
        while(LinkPy1 != NULL)
        {
            iTempExp = LinkPy1->Exponent+LinkPy2->Exponent;
            iTempCoe = LinkPy1->Coefficient*LinkPy2->Coefficient;
            if(isEmpty(LinkRc))
            {
                Insert(iTempExp,iTempCoe,LinkRc);
            }else
            {
                LinkList LinkResult = LinkRc->pNext;
                while(LinkResult != NULL)
                {
                    if(LinkResult->Exponent == iTempExp)
                    {
                        LinkResult->Coefficient += iTempCoe;
                        break;
                    }else if((LinkResult->Exponent < iTempExp && LinkResult->pNext->Exponent > iTempExp) || isLast(LinkResult))
                    {
                        Insert(iTempExp,iTempCoe,LinkResult);
                        break;
                    }
                    LinkResult = LinkResult->pNext;
                }  

            }
            LinkPy1 = LinkPy1->pNext;
        }
        LinkPy2 = LinkPy2->pNext;
    }
}

本文出自 “About:Blank H4cking” 博客,请务必保留此出处http://pnig0s1992.blog.51cto.com/393390/813245

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索单链表
, insert
, 课后习题答案
, 数据结构 单链表
, 多项式
, c语言 单链表
, mapping coefficients
, 语言 多项式 数据结构
, 单链表c语言
, 勒让德多项式
, c语言单链表
LinkList
单链表实现多项式相加、单链表一元多项式相加、多项式乘法、多项式的乘法、matlab多项式乘法,以便于您获取更多的相关知识。

时间: 2024-10-02 06:55:43

[单链表]多项式乘法的相关文章

数据结构模版----单链表实现方式总结

数据结构模版----单链表实现方式总结 前面我们提供了四种方式实现的单链表,有带头结点的不带头结点的,而单链表的结构体定义也有两种方式,那么这些实现方式,到底有什么区别呢,为什么会出现这么多种实现方式呢,下面我们就来细细体会 一 单链表结构体的实现区别 首先我们对比一下,单链表结构体 不同方式的单链表实现时,链表结点的实现是相同的,不同之处在于单链表结构体的实现上 单链表结构体的实现 [cpp] view plain copy print? typedef int ElemType;      

单链表的实现

在单链表中,我们需要在内部有一个头节点,我们可以通过这个头节点找到其他的节点,相当于一个线索. 纵观顺序结构的线性表和单链表的实现,难点基本上都在于添加和删除操作.基于数组的线性表中,数组的索引就相当于是线性表的序号,但在单链表中,我们没有序号这个东西,所以在添加和删除操作中,我们需要先找到指定的元素,然后才能继续进行操作.在插入操作中,我们需要同时保存有当前节点的前一个节点和当前的节点,因为当前要插入的节点要放在前一个节点的Next引用域,而当前节点要放在要插入节点的next域.删除节点与此相

单链表的顺序-c++正序与逆序创建单链表有什么区别

问题描述 c++正序与逆序创建单链表有什么区别 c++正序与逆序创建单链表有什么本质的区别,逆序比顺序的优点体现在哪? 解决方案 逆序没什么特别的好处,给你学编程的时候练练手玩的,在实际的项目中会用到标准库,那是双向链表,没有逆序创建一说. 要说逆序的好处:当要加入新的数据时,不需要遍历链表,可以直接在头结点之后插入即可,减少时间复杂度 解决方案二: 没有太大价值吧......不过双向的链表应用很广泛 解决方案三: 逆序创建单链表

java单链表常用操作

总结提高,与君共勉 概述. 数据结构与算法亘古不变的主题,链表也是面试常考的问题,特别是手写代码常常出现,将从以下方面做个小结 [链表个数] [反转链表-循环] [反转链表-递归] [查找链表倒数第K个节点] [查找链表中间节点] [判断链表是否有环] [从尾到头打印单链表-递归] [从尾到头打印单链表-栈] [由小到大合并有序单链表-循环] [由小到大合并有序单链表-递归] 通常在Java中这样定义单链表结构 [java] view plain copy <span style="fon

用java学习数据结构--单链表

数据|数据结构 /* * Created on 2004-9-10 * * 单链表中的结点类型声明. */package org.arliang;/** * @author 李梁 * * 单链表中的结点. */public class node{ private int data; //存放数据 private node link; //链接的下一个接点. public static void main(String[]args) { } /** * @return Returns the da

数据结构(C#):单链表

与顺序表相比,链表有自己的特点:插入.删除操作无需移动元素:能够高效实现动态内存分配:但 不能按节点索引快速定位到节点:由于需要记录指针域,系统开销较大. 本篇介绍单链表的实现,使用上一篇定义的接口. 代码: /* * File : SingleLinkedList.cs * Author : Zhenxing Zhou * Date : 2008-12-06 * Blog : http://www.xianfen.net/ */ using System; using System.Colle

大话数据结构二:线性表的链式存储结构(单链表)

1. 线性表的链式存储结构:指的是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的,这就意味着这些数据元素可以存在内存未被占用的任意位置. 2. 结点:结点由存放数据元素的数据域和存放后继结点地址的指针域组成. 1.)顺序存储结构中,每个数据元素只需要存数据元素的信息就可以了. 2.)链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址. 3.)链表中第一个结点叫头结点,它的存储位置叫做头指针,它的数据域可以不存储任何信息,链表的最后一个结

单链表相关算法

[1]打印单链表,void PrintList(List list); 使用一个指针遍历所有链表节点. [2]两个升序链表,打印tarList中的相应元素,这些元素的序号由SeqList指 定,void PrintLots(List tarList, List seqList); 使用两个指针分别遍历两个链表,每次取出序列链表的一个序号后,根据该 序号,到达目标链表指定节点. [3]两个升序链表交集 ,List Intersect(List l1, List l2); [4]两个升序链表并集 ,

数据结构学习(C++)之单链表

节点类 #ifndef Node_H#define Node_Htemplate <class Type> class Node //单链节点类{ public: Type data; Node<Type> *link; Node() : data(Type()), link(NULL) {} Node(const Type &item) : data(item), link(NULL) {} Node(const Type &item, Node<Type&