国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)【一元多項式的運算】【C語言】

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)【一元多項式的運算】【C語言】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、一元多項式的運算:實現(xiàn)兩個多項式加、減乘運算

設(shè)計內(nèi)容:

用順序存儲結(jié)構(gòu)實現(xiàn)一元多項式的加法、減法和乘法。具體要求為:用五個函數(shù)分別實現(xiàn)一元多項式的創(chuàng)建、輸出、加法、減法和乘法;

設(shè)計思路:

將順序表數(shù)組下標作為多項式的指數(shù)項,數(shù)組內(nèi)的數(shù)據(jù)元素存放多項式的系數(shù),通過訪問數(shù)組內(nèi)元素的同時獲取下標并對二者進行不同的運算后,將運算結(jié)果依舊按原形式放入新的數(shù)組中,完成對兩個多項式的加減乘運算。

測試數(shù)據(jù):

多項式1: 10 + 5 x ? 4 x 2 + 3 x 3 + 2 x 4 10 + 5x -4x^2 + 3x^3 + 2x^4 10+5x?4x2+3x3+2x4(即輸入10 0 5 1 -4 2 3 3 2 4)(輸入-1 -1結(jié)束)

多項式2: ? 3 + 8 x + 4 x 2 ? 5 x 4 + 7 x 5 ? 2 x 6 -3 + 8x + 4x^2 - 5x^4 + 7x^5 -2x^6 ?3+8x+4x2?5x4+7x5?2x6(即輸入 -3 0 8 1 4 2 -5 4 7 5 -2 6)(輸入 -1 -1結(jié)束)

數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)【一元多項式的運算】【C語言】

代碼實現(xiàn):
1、構(gòu)造一個空的線性表L
void InitList(SqList *L) {
    /**申請連續(xù)的MAXSIZE長度空間*/
    L->data = (ElemType *) malloc(sizeof(ElemType) * MAXSIZE);
    /**判斷空間是否申請成功*/
    if (!L->data)
        exit(-1);
    for (int i = 0; i < MAXSIZE; i++)
        L->data[i] = 0;
    /**空表最高次項為0*/
    L->highPower = 0;
}
2、銷毀線性表L
  • 釋放data指向的空間
  • 讓L -> data指向null
  • 讓L- > highPower =0
void DestroyList(SqList *L) {
    /**釋放data指向的空間*/
    free(L->data);
    L->data = NULL;
    L->highPower = 0;
}
3、兩多項式相加
/**兩多項式相加*/
void TwoPolynomialAdd(SqList L1, SqList L2, SqList *L3) {
    /**獲取兩多項式的最大項以確定相加后的多項式的最大項*/
    L3->highPower = L1.highPower > L2.highPower ? L1.highPower : L2.highPower;
    /**通過循環(huán)將兩個多項式的同指數(shù)項的系數(shù)相加并保存到新的多項式中*/
    for (int i = 0; i <= L3->highPower; i++)
        L3->data[i] = L1.data[i] + L2.data[i];
}
4、兩多項式相減
/**兩多項式相減*/
void TwoPolynomialSub(SqList L1, SqList L2, SqList *L3) {
    /**獲取兩多項式的最大項以確定相加后的多項式的最大項*/
    L3->highPower = L1.highPower > L2.highPower ? L1.highPower : L2.highPower;
    /**通過循環(huán)將兩個多項式的同指數(shù)項的系數(shù)相減并保存到新的多項式中*/
    for (int i = 0; i <= L3->highPower; i++)
        L3->data[i] = L1.data[i] - L2.data[i];
}
5、兩多項式相乘
/**兩多項式相乘*/
void TwoPolynomialMul(SqList L1, SqList L2, SqList *L3) {
    /**兩多項式的最高項相加為新多項式的最高項*/
    L3->highPower = L1.highPower + L2.highPower;
    for (int i = 0; i <= L1.highPower; i++)
        /**通過雙層循環(huán)將兩個多項式的每一項兩兩相乘與并保存到新的多項式中*/
        for (int j = 0; j <= L2.highPower; j++)
            /**相乘后的指數(shù)項為兩項指數(shù)項相加*/
            L3->data[i + j] += L1.data[i] * L2.data[j];
}
6、完整代碼實現(xiàn)
#include <stdio.h>
#include <stdlib.h>

/**表可能達到的最大長度,存儲空間初始分配量*/
#define MAXSIZE 20

/**表的數(shù)據(jù)類型,根據(jù)實際情況而定*/
typedef int ElemType;

typedef struct {
    /**數(shù)組存儲數(shù)據(jù)元素,最大值為MAXSIZE*/
    ElemType *data;
    /**最高次項*/
    int highPower;
} SqList;

/**構(gòu)造一個空的線性表L*/
void InitList(SqList *L) {
    /**申請連續(xù)的MAXSIZE長度空間*/
    L->data = (ElemType *) malloc(sizeof(ElemType) * MAXSIZE);
    /**判斷空間是否申請成功*/
    if (!L->data)
        exit(-1);
    for (int i = 0; i < MAXSIZE; i++)
        L->data[i] = 0;
    /**空表最高次項為0*/
    L->highPower = 0;
}

/**銷毀線性表L*/
void DestroyList(SqList *L) {
    /**釋放data指向的空間*/
    free(L->data);
    L->data = NULL;
    L->highPower = 0;
}

/**創(chuàng)建多項式:由用戶輸入多項式的每項系數(shù)與指數(shù)*/
void CreatePolynomial(SqList *L) {
    int coefficient, exponent;

    /**循環(huán)輸入常數(shù)項的每一項*/
    for (int i = 0; i < 10; i++)
    {
        printf("\n請輸入第%d項的常數(shù)項和指數(shù)項,結(jié)束請輸入-1 -1:", i + 1);
        scanf("%d%d", &coefficient, &exponent);
        /**指數(shù)為-1則結(jié)束輸入*/
        if (exponent != -1) 
        {
            /**數(shù)組下標為指數(shù)項,常數(shù)項存入下標對應(yīng)的位置,若有相同指數(shù)項則常數(shù)項相加*/
            L->data[exponent] += coefficient;
            /**指數(shù)項最大項為多項式長度*/
            if (L->highPower < exponent) 
                L->highPower = exponent;
        } else
            break;
    }
    printf("輸入完畢\n");
}

/**輸出常數(shù)項:按多項式指數(shù)大小依次輸出多項式每一項*/
void PrintPolynomial(SqList L) {
    printf("多項式為:");

    /**若常數(shù)項為0則不輸出,若不為0則只輸出常數(shù)項*/
    if (L.data[0] != 0)
        printf("%d", L.data[0]);

    /**若常數(shù)項為0則不輸出*/
    if (L.data[1] > 0)
        printf("+%dx", L.data[1]);/**不輸出指數(shù)項為1*/
    else if (L.data[1] < 0)
        printf("%dx", L.data[1]);

    /**從第二項開始輸出指數(shù)項*/
    for (int i = 2; i <= L.highPower; i++)
        /**若常數(shù)項為0則不輸出該項*/
        if (L.data[i] > 0)
            printf("+%dx^%d", L.data[i], i);
        else if (L.data[i] < 0)
            printf("%dx^%d", L.data[i], i);

    printf("\n");
}

/**兩多項式相加*/
void TwoPolynomialAdd(SqList L1, SqList L2, SqList *L3) {
    /**獲取兩多項式的最大項以確定相加后的多項式的最大項*/
    L3->highPower = L1.highPower > L2.highPower ? L1.highPower : L2.highPower;
    /**通過循環(huán)將兩個多項式的同指數(shù)項的系數(shù)相加并保存到新的多項式中*/
    for (int i = 0; i <= L3->highPower; i++)
        L3->data[i] = L1.data[i] + L2.data[i];
}

/**兩多項式相減*/
void TwoPolynomialSub(SqList L1, SqList L2, SqList *L3) {
    /**獲取兩多項式的最大項以確定相加后的多項式的最大項*/
    L3->highPower = L1.highPower > L2.highPower ? L1.highPower : L2.highPower;
    /**通過循環(huán)將兩個多項式的同指數(shù)項的系數(shù)相減并保存到新的多項式中*/
    for (int i = 0; i <= L3->highPower; i++)
        L3->data[i] = L1.data[i] - L2.data[i];
}

/**兩多項式相乘*/
void TwoPolynomialMul(SqList L1, SqList L2, SqList *L3) {
    /**兩多項式的最高項相加為新多項式的最高項*/
    L3->highPower = L1.highPower + L2.highPower;
    for (int i = 0; i <= L1.highPower; i++)
        /**通過雙層循環(huán)將兩個多項式的每一項兩兩相乘與并保存到新的多項式中*/
        for (int j = 0; j <= L2.highPower; j++)
            /**相乘后的指數(shù)項為兩項指數(shù)項相加*/
            L3->data[i + j] += L1.data[i] * L2.data[j];
}

int Menu() {
    int a;
    printf("輸入1創(chuàng)建兩個多項式\t\t輸入2輸出兩個多項式\n");
    printf("輸入3將兩個多項式相加 \t\t輸入4將兩個多項式相減\n");
    printf("輸入5將兩個多項式相乘 \t\t輸入0退出\n");
    printf("請輸入:");
    scanf("%d", &a);
    return a;
}

int main() {
    SqList L1, L2, L3;
    InitList(&L1);
    InitList(&L2);
    InitList(&L3);

    while (1) {
        switch (Menu()) {
            case 1:
                printf("\n請輸入多項式 1 :");
                CreatePolynomial(&L1);
                printf("\n多項式 1 為:\n");
                PrintPolynomial(L1);
                printf("\n請輸入多項式 2 :");
                CreatePolynomial(&L2);
                printf("\n多項式 2 為:\n");
                PrintPolynomial(L2);
                break;
            case 2:
                printf("\n多項式 1 為:\n");
                PrintPolynomial(L1);
                printf("\n多項式 2 為:\n");
                PrintPolynomial(L2);
                break;
            case 3:
                InitList(&L3);
                TwoPolynomialAdd(L1, L2, &L3);
                printf("兩多項式相加后的結(jié)果");
                PrintPolynomial(L3);
                break;
            case 4:
                TwoPolynomialSub(L1, L2, &L3);
                printf("兩多項式相減后的結(jié)果");
                PrintPolynomial(L3);
                break;
            case 5:
                DestroyList(&L3);
                InitList(&L3);
                TwoPolynomialMul(L1, L2, &L3);
                printf("兩多項式相乘后的結(jié)果");
                PrintPolynomial(L3);
                break;
            case 0:
                exit(0);
            default:
                printf("暫無此功能\n");
        }
    }
}
運行結(jié)果:

數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)【一元多項式的運算】【C語言】

數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)【一元多項式的運算】【C語言】

相加后的多項式為: 7 + 13 x + 3 x 3 ? 3 x 4 + 7 x 5 ? 2 x 6 7+13x+3x^3-3x^4+7x^5-2x^6 7+13x+3x3?3x4+7x5?2x6

相減后的多項式為: 13 ? 3 x ? 8 x 2 + 3 x 3 + 7 x 4 ? 7 x 5 + 2 x 6 13-3x-8x^2+3x^3+7x^4-7x^5+2x^6 13?3x?8x2+3x3+7x4?7x5+2x6

相乘后的多項式為:- 30 + 65 x + 92 x 2 ? 21 x 3 ? 48 x 4 + 73 x 5 + 43 x 6 ? 53 x 7 + 19 x 8 + 8 x 9 ? 4 x 1 0 30+65x+92x^2-21x^3-48x^4+73x^5+43x^6-53x^7+19x^8+8x^9-4x^10 30+65x+92x2?21x3?48x4+73x5+43x6?53x7+19x8+8x9?4x10文章來源地址http://www.zghlxwxcb.cn/news/detail-414207.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)【一元多項式的運算】【C語言】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)中: 一元多項式的運算(相加,相減,相乘)------用C語言 / C++來實現(xiàn)。 數(shù)據(jù)結(jié)構(gòu)線性表的操作和應(yīng)用(順序存儲)

    數(shù)據(jù)結(jié)構(gòu)中: 一元多項式的運算(相加,相減,相乘)------用C語言 / C++來實現(xiàn)。 數(shù)據(jù)結(jié)構(gòu)線性表的操作和應(yīng)用(順序存儲)

    線性表的操作和應(yīng)用(順序存儲)。用順序存儲實現(xiàn)一元多項式,并進行加、減、乘運算。 (1)一元多項式結(jié)構(gòu)體創(chuàng)建? (2)初始化 (3)一元多項式賦值? ? ? ? ? ? ?(4)打印一元多項式 (5)加法運算? ? ? ? ? ? ? ? ? ? ? ? (6)減法運算 (7)乘法運算 ? ?全部代

    2024年02月01日
    瀏覽(99)
  • 題02-線性結(jié)構(gòu)2 一元多項式的乘法與加法運算(C語言)

    題02-線性結(jié)構(gòu)2 一元多項式的乘法與加法運算(C語言)

    設(shè)計函數(shù)分別求兩個一元多項式的乘積與和。 輸入格式: 輸入分2行,每行分別先給出多項式非零項的個數(shù),再以指數(shù)遞降方式輸入一個多項式非零項系數(shù)和指數(shù)(絕對值均為不超過1000的整數(shù))。數(shù)字間以空格分隔。 輸出格式: 輸出分2行,分別以指數(shù)遞降方式輸出乘積多項式

    2024年02月07日
    瀏覽(18)
  • 【數(shù)據(jù)結(jié)構(gòu)】15 隊列應(yīng)用實例:多項式加法運算

    我們準備采用不帶頭節(jié)點的單向鏈表結(jié)構(gòu)表示一元多項式,并按照指數(shù)遞減的順序排列各項。 對列表存放的兩個多項式進行加法運算時,可以使用兩個指針p1和p2。初始時的p1和p2分別指向這兩個多項式第1個節(jié)點(指數(shù)的最高項)。通過循環(huán)不斷比較p1和p2所指的節(jié)點,比較結(jié)

    2024年02月21日
    瀏覽(34)
  • 【ZZULI數(shù)據(jù)結(jié)構(gòu)實驗一】多項式的三則運算

    【ZZULI數(shù)據(jù)結(jié)構(gòu)實驗一】多項式的三則運算

    ?? 博客主頁: 小鎮(zhèn)敲碼人 ?? 歡迎關(guān)注:??點贊 ????留言 ??收藏 ?? 任爾江湖滿血骨,我自踏雪尋梅香。 萬千浮云遮碧月,獨傲天下百堅強。 男兒應(yīng)有龍騰志,蓋世一意轉(zhuǎn)洪荒。 莫使此生無痕度,終歸人間一捧黃。?????? ?? 什么?你問我答案,少年你看,下一

    2024年04月15日
    瀏覽(24)
  • 一元多項式相加問題(兩種方法)

    一元多項式相加問題(兩種方法)

    一元多項式的相加問題,主要運用了線性結(jié)構(gòu)的合并,在合并線性結(jié)構(gòu)的基礎(chǔ)上,增加判斷,所以我們可以將這個問題理解為一個復(fù)雜的線性表合并問題? 目錄 問題描述 一、順序表法 1.1 初始化并創(chuàng)建順序表 1.2 一元多項式相加算法 1.3 完整代碼 二、單鏈表法 1.1 初始化并創(chuàng)

    2024年02月06日
    瀏覽(24)
  • 【鏈表應(yīng)用】| 一元多項式的操作

    【鏈表應(yīng)用】| 一元多項式的操作

    專欄推薦:寫文章剛剛起步,各個專欄的知識點后續(xù)會補充完善,不斷更新好文,希望大 家支持一下。 專欄 名字 Elasticsearch專欄 es spring專欄 spring開發(fā) redis專欄 redis學(xué)習(xí)筆記 項目專欄 項目集錦 修bug專欄 bug修理廠 設(shè)有兩個一元多項式: p(x)=p0+p1x+p2x2+···+pnxn q(x)=q0+q1x+q2x2+··

    2024年02月06日
    瀏覽(38)
  • 一元稀疏多項式簡單計算器(C語言)含注釋

    一元稀疏多項式簡單計算器(C語言)含注釋

    問題描述 設(shè)計一個一元稀疏多項式簡單計算器 基本要求 一元稀疏多項式簡單計算器的基本功能是: (1)輸入并建立多項式; (2)輸出多項式,輸出形式為整數(shù)序列:n,c1,e1,c2,e2,……,cn,en,其中n是多項式的項數(shù),ci和ei分別是第i項的系數(shù)和指數(shù),序列按指數(shù)降序排列; (

    2024年02月08日
    瀏覽(18)
  • PTA 習(xí)題3.6 一元多項式的乘法與加法運算

    PTA 習(xí)題3.6 一元多項式的乘法與加法運算

    設(shè)計函數(shù)分別求兩個一元多項式的乘積與和。 輸入格式: 輸入分2行,每行分別先給出多項式非零項的個數(shù),再以指數(shù)遞降方式輸入一個多項式非零項系數(shù)和指數(shù)(絕對值均為不超過1000的整數(shù))。數(shù)字間以空格分隔。 輸出格式: 輸出分2行,分別以指數(shù)遞降方式輸出乘積多項式

    2024年02月07日
    瀏覽(23)
  • Python做曲線擬合(一元多項式擬合及任意函數(shù)擬合)

    Python做曲線擬合(一元多項式擬合及任意函數(shù)擬合)

    目錄 1. 一元多項式擬合 使用方法?np.polyfit(x, y, deg) 2. 任意函數(shù)擬合 使用 curve_fit() 方法 實例: (1)初始化 x 和 y 數(shù)據(jù)集 (2)建立自定義函數(shù) (3)使用自定義的函數(shù)生成擬合函數(shù)繪圖? polyfig 使用的是最小二乘法,用于擬合一元多項式函數(shù)。 參數(shù)說明: x 就是x坐標,

    2024年02月02日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包