利用結點資料型別,求兩個一元多項式的和
# include <malloc.h>
# include <stdlib.h>
typedef struct PNode
{
int coef;
int exp;
struct PNode *next;
}node;
node *CreateP(void)
{
node *h,*tail,*s;
int coef, exp;
h = (node *)malloc(sizeof(node));
if (!h)
{
exit(-1);
}
h->next = NULL;
tail = h;
printf("請輸入每一項的係數和指數(中間以逗號隔開):\n");
printf("coef,exp: ");
scanf("%d,%d",&coef,&exp);
while (coef)
{
s = (node *)malloc (sizeof(node));
if (!s)
{
exit(-1);
}
s->coef = coef;
s->exp = exp;
s->next = tail->next;
tail->next = s;
tail = s;
printf("ceof,exp: ");
scanf("%d,%d",&coef,&exp);
}
return h;
}
void PAdd(node *polya, node *polyb)
{
node *p, *q, *pre, *temp;
int sum = 0;;
p = polya->next;
q = polyb->next;
pre = polya;
while (p && q)
{
if (p->exp < q->exp)
{
pre->next = p;
pre = p;
p = p->next;
}
else if (p->exp > q->exp)
{
pre->next = q;
pre = q;
q = q->next;
}
else
{
sum = p->coef + q->coef;
if (sum)
{
p->coef = sum;
pre->next = p;
pre = p;
p = p->next;
temp = q->next;
free(q);
q = temp;
}
else
{
temp = p->next;
free(p);
p = temp;
temp = q->next;
free(q);
q = temp;
}
}
}
pre->next = p?p:q;
}
int Prin(node *h)
{
node *p = h->next;
while(p&&(p->next!=NULL))
{
printf("%d*x^%d+",p->coef, p->exp);
p = p->next;
}
if(p->next==NULL)
printf("%d*x^%d",p->coef, p->exp);
printf("\n");
return 1;
}
void main()
{
node *polya, *polyb;
printf("請輸入第一個一元多項式的係數和指數(以輸入係數為0來結束):\n");
polya = CreateP();
printf("\n");
printf("請輸入的第一個一元多項式為:\n");
Prin(polya);
printf("\n");
printf("輸入第二個一元多項式的係數和指數(以輸入係數為0來結束):\n");
polyb = CreateP();
printf("\n");
printf("輸入的第二個一元多項式為:\n");
Prin(polyb);
printf("\n");
printf("這兩個一元多項式相加後的多項式C為:\n");
printf("C=");
PAdd(polya, polyb);
Prin(polya);
fflush(stdin);
getchar();
}
相關推薦
利用結點資料型別,求兩個一元多項式的和
# include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct PNode { int coef; int exp; struct
資料結構:求兩個有序列表的交集,並集
1.求兩個有序列表的交集 LNode* Intersection(LNode* La,LNode* Lb) { if (La==NULL||Lb==NULL) { return NULL; } LNode *pCHead = NULL; //A與B交集頭 LNode *pCE
資料結構 一元稀疏多項式 利用鏈式儲存實現儲存一元多項式,並計算兩個一元多項式之和
一、實驗原理 利用鏈式儲存實現儲存一元多項式,並計算兩個一元多項式之和。一元多項式由係數和指數構成。 1、create()儲存係數指數:首先建立一個頭結點headLnode,從headLnode->next開始存入係數和指數,只有係數是0時,才表示這個多項式的結束,否
線性表的抽象資料型別及求兩陣列的並集
1.operation InitList(*L):初始化操作,建立一個空的線性表L. ListEmpty(L):判斷線性表是否為空表,若為空,則返回true,否則返回false。  
寫一個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算子號
思路:首先看十進位制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算進位,得到2。第二步:計算進位值,得到10. 如果這一步的進位值為0,那麼第一步得到的值就是最終結果。第三步:重複上述兩步,只是相加的值變成上述兩步的得到的結果2和10,得到12。同樣我們可以用三
從主檔案中讀取n個子資料夾中的圖片(每一子檔案中有兩個資料夾,每兩個檔案中有18張圖片)
tic clc; clear all; close all; str = 'F:\shijie-test\test-finger\'; pt = dir(str); foldname = []; k = 0; for i = 1 : length(pt) ifstr
C++定義一個複數類Complex,過載運算子“+”,使之能用於複數的加法運算。將運算子函式過載為非成員、非友元的普通函式。編寫程式,求兩個複數之和。
#include <iostream> #include <iomanip> using namespace std; class Complex { public: Complex(); Complex(double r,do
程式設計題:給定兩個集合,求兩個集合的交集
題目:給定兩個整數集合,求兩個集合的交集。 法一:排序法(先將集合排序,在找交集) 排序時間複雜度O(nlogn),對集合遍歷查詢O(n);總的時間複雜度O(nlogn); void main() { int a[] = { 1, 5, 9, 8,
題目:寫一個函式,求兩個整數之和,要求在函式體內不得適用+,-,* ,./ 四則運算子號
題目:寫一個函式,求兩個整數之和,要求在函式體內不得適用+,-,* ,./ 四則運算子號 面試的時候被問道這個問題,首先我們分析人們是如何進行十進位制的加法的,比如如何得出5+17=22這個結果的,實際上,我們可以分三步進行:第一步只做各位相加不進
python面試題,求兩個List各個元素相減絕對值最小是多少
春暖花開,人心浮動,吾思當左遷之,一則工資上漲,二則環境變好。奈何世道不然,吹牛空談者大受歡迎,而吾實事求是者則落寞如此,知之為知之,不知為不知。 投遞無數,才得一二,某國有電信公司邀請面試,始記得吾曾於去年三月去過,現復一年又至三月,碰運氣吧! 約至午後兩點,前臺等候,看
C語言,實現兩個整數m和n的二進位制序列中有多少不同的位
新手學程式設計,大佬寫的太高深,看看本人小白寫的,一起學習一起交流 #include <stdio.h> int main() { int m = 0; int n = 0; int i = 0; int count = 0; scanf("%d%d", &
LINUX Shell 下求兩個檔案交集和差集的辦法
轉載自https://blog.csdn.net/autofei/article/details/6579320 假設兩個檔案FILE1和FILE2用集合A和B表示,FILE1內容如下: a b c e d a FILE2內容如下: c d
C語言程式設計求兩個複數的和
#include <stdio.h> #include <stdlib.h> /* 1.程式設計求兩個複數的和 結構體 函式 返回值是結構體 引數 兩個結構體 */ struct Complex { int x; int y; }; stru
jzxx1029求兩個自然數M和N的最大公約數
題目描述 求兩個自然數M和N的最大公約數(M,N都在長整型範圍內) 輸入 輸入一行,包括兩個整數. 輸出 輸出只有一行(這意味著末尾有一個回車符號),包括1個整數。 樣例輸入 45 60 樣例輸出 15 滿分程式碼: #include <bits/stdc
程式設計求解,輸入兩個整數n和m,從數列1,2,3,……n中隨意取幾個數,使其和等於m。要求將所有的可能組合列出來(揹包問題求解) .
程式設計求解,輸入兩個整數n和m,從數列1,2,3,……n中隨意取幾個數,使其和等於m。要求將所有的可能組合列出來。實際上就是一個揹包問題。 求解思路: 1.首先判斷,如果n>m,則n中大於m的數不可能參與組合,此時置n = m; 2.將最大數n加入且n == m,則
java求兩個字元A和B最大的相同字串
private static ArrayList getMaxSubString(String s1,String s2){ //最大相同子串,s1,s2=min String max=(s1.length()>s2.length())?s1:s2; String min=(m
我們認為2是第一個素數,3是第二個素數,5是第三個素數,依次類推。 現在,給定兩個整數n和m,0
我們認為2是第一個素數,3是第二個素數,5是第三個素數,依次類推。 現在,給定兩個整數n和m,0<n<=m<=200,你的程式要計算第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。 /*我們認為2是第一個素數,3是第二個素數,5
兩個一元多項式相加
程式執行結果如下:<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;"># include<stdio.h></
兩個一元多項式相加(連結串列 || 順序表實現)
順序表實現: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> using
利用sort和uniq求兩個文件的並集,交集和差集
sort uniq 利用sort和uniq求兩個文件的並集,交集和差集 並集:cat file1.txt file2.txt | sort | uniq > file.txt 交集:cat file1.txt file2.txt | sort | uniq -d >file.txt