设计函数求一元多项式的导数。
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
样例">输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int a;
int x;
struct Lnode* next;
}Lnode, * Linklist;
int InitList(Linklist& L)
{
L = (Linklist)malloc(sizeof(Lnode));
if (!L)
{
exit(0);
}
L->next = NULL;
return 1;
}
int Create(Linklist& L,int a,int b)
{
if (b<0)
{
return 0;
}
Linklist p;
p = (Linklist)malloc(sizeof(Lnode));
p->a = a;
p->x = b;
p->next = L->next;
L->next = p;
return 1;
}
int Reverse(Linklist& L) //逆向输出
{
Linklist p, q;
p = (Linklist)malloc(sizeof(Lnode));
p = L->next;
L->next = NULL;
while (p!=NULL)
{
q = (Linklist)malloc(sizeof(Lnode));
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
return 1;
}
int main()
{
Linklist L;
InitList(L);
int a;
int b;
int flag = 0;
while (scanf("%d%d",&a,&b)!=EOF)
{
Create(L, a * b, b - 1);
if (b==0)
{
break;
}
}
if (L->next==NULL)
{
printf("0 0");
}
else
{
Reverse(L);
Linklist p;
p = (Linklist)malloc(sizeof(Lnode));
p = L->next;
while (p->next!=NULL)
{
printf("%d %d ", p->a,p->x);
p = p->next;
}
printf("%d %d", p->a, p->x);
}
return 0;
}