IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构与算法实验01-使用链表实现多项式乘法 -> 正文阅读

[数据结构与算法]数据结构与算法实验01-使用链表实现多项式乘法

多项式乘法程序

一个学期才4个实验,太少了吧,边打炉石边写程序花了三四天把四个实验水完了,代码放上供大家参考

由于全程使用的C语言,加上写的很随意,代码优化的空间很大,有很多冗余的代码,只不过写完了就当交差了

实验题目:多项式乘法问题
实验目的:设计一个一元稀疏多项式简单计算器。实验内容与要求 一元稀疏多项式简单计算器的基本功能是:
1.输入并建立多项式;

  • 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列。
  • 多项式a与多项式b相乘,建立多项式。

代码思路

  • 使用链表存多项式
  • 每一个参数链表后的位置后插入

完整代码

#include "stdio.h"
#include "stdlib.h"
#define N 1000
typedef struct muls
{
    int val[N];
    int idx[N];
    int ne[N];
    int head;
    int cnt;
}mul;
mul *eq1;
mul *eq2;
mul *res;
void get_mul(mul *v,int n);
void read();
void  times(mul *x,mul *y);
void insert_k(mul *m,int v,int i,int k);
void insert(mul *m,int v,int  i);
void init();
int main()
{
    init();
    read();
}
void init()
{
    eq1= (mul *)(malloc(sizeof(mul)));
    eq2=(mul  *)(malloc(sizeof (mul)));
    res=(mul *)(malloc(sizeof (mul)));
    eq1->cnt=0;
    eq1->head=-1;
    eq2->cnt=0;
    eq2->head=-1;
    res->cnt=0;
    res->head=-1;
}
void read()
{
    printf("欢迎使用一元多项式简易计算器\n");
    printf("输入格式为系数 指数 (回车键结束)\n");
    printf("下面请输入第一个多项式:\n");
    printf("你输入的多项式项数为:\n");
    int n=0;
    scanf("%d",&n);
    get_mul(eq1,n);
    printf("输入第二个多项式:\n");
    printf("你输入的多项式项数为:\n");
    scanf("%d",&n);
    get_mul(eq2,n);
    printf("计算结果如下:\n");
    times(eq1,eq2);
    int t=res->head;
    while(t!=-1)
    {
        printf("%d %d\n",res->val[t],res->idx[t]);
        t=res->ne[t];
    }
}
void  times(mul *x,mul *y)
{
    int x_t=x->head;
    while(x_t!=-1)
    {
        int x_val=x->val[x_t];
        int x_idx=x->idx[x_t];
        x_t=x->ne[x_t];
        int y_t=y->head;
        while(y_t!=-1)
        {
            int y_val=y->val[y_t];
            int y_idx=y->idx[y_t];
            int res_val=x_val*y_val;
            int res_idx=x_idx+y_idx;
            y_t=y->ne[y_t];
            insert(res,res_val,res_idx);
        }
    }
}
void get_mul(mul *v,int n)
{
    while(n--)
    {
        int a, b;
        scanf("%d %d",&a,&b);
        insert(v,a,b);
    }
}
void Head(mul *m,int v,int i)
{
    int c=m->cnt;
    m->val[c]=v;
    m->idx[c]=i;
    m->ne[c]=m->head;
    m->head=m->cnt++;
}
int search(mul *m,int v,int i)
{
    int t=m->head;
    while(t!=-1) {
        if (m->idx[t] == i) {
            m->val[t] += v;
            return 1;
        }
        t = m->ne[t];
    }
    return 0;
}
void insert(mul *m,int v,int  i)
{
    if(search(m,v,i)==0)
    {
        int t=m->head;
        if(m->idx[t]<i)
        {
            Head(m, v, i);
            return;
        }
        while(t!=-1)
        {
            int la=t;
            t = m->ne[t];
            if(m->idx[t]<i)
            {
                insert_k(m,v,i,la);
                return;
            }
        }
        insert_k(m,v,i,t);
        return;
    }
}
void insert_k(mul *m,int v,int i,int k)
{
    m->cnt++;
    int c=m->cnt;
    int x=m->ne[k];
    m->ne[k]=c;
    m->val[c]=v;
    m->idx[c]=i;
    m->ne[c]=x;
}

运行截图

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:50:05  更:2022-03-04 15:51:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:34:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码