注意嗷:這里的一元多項式輸入時,指數exp不一定是按照遞增順序輸入的,但是最終我們想獲得一個指數遞增的鏈表形式,所以在插入新結點時,需要進行判斷,把他放在合適的位置,
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//結構體定義
typedef struct node
{
int cofe,exp;
struct node *next;
}Lnode,*Linklist;
//建立系數遞增鏈表 并輸入一元多項式的系數及指數
int Create_L(Linklist &L,int n)
{
Linklist s,g,p,r;//指示指標
int i;
L=(Linklist)malloc(sizeof(Lnode));
L->next=NULL;//建立頭結點
for(i=1;i<=n;i++)//接下來輸入剩余項系數與指數,但在插入鏈表前需要比較指數,放在適宜位置
{
s=(Linklist)malloc(sizeof(Lnode));
printf("輸入該項系數:");
scanf("%d",&s->cofe);
printf("輸入該項指數:");
scanf("%d",&s->exp);
g=L->next;
p=L;
while(g!=NULL&&s->exp>g->exp)
{
g=g->next;p=p->next;//該結點需要插入在原鏈表p指標所指結點之后
}
s->next=p->next;
p->next=s;
}
}
//運算多項式的值
int Sum_L( Linklist L,int x)
{
int sum=0;
Linklist w;;
w=L->next;
while(w)
{
sum=sum+w->cofe*pow(x,w->exp);
w=w->next;
}
printf("多項式的值為:%d\n",sum);
}
//列印一元多項式鏈表
int Print_L(Linklist L)
{
Linklist k;
k=L->next;
printf("一元多項式鏈表的系數和指數為:\n");
while(k)
{
printf("%d %d\n",k->cofe,k->exp);
k=k->next;
}
}
//運算主函式
int main()
{
Linklist L,w;
int n,x,sum=0;
printf("請輸入多項式的項數n:");
scanf("%d",&n);
Create_L(L,n);
Print_L(L);
printf("請輸入多項式的x的值:");
scanf("%d",&x);
Sum_L(L,x);
}
附運算結果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271476.html
標籤:其他
