实验要求
(1)输人说明:以指数递降方式输人多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
(2)输出说明:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
(3)测试用例:
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct Link{
int c;
int e;
struct Link *next;
}LinkNode;
void InitList(LinkNode *&L){
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
}//建立头结点
void CreateListF(LinkNode *&L,int n)
{ void InitList(LinkNode *&L);
InitList(L);
LinkNode *s,*r;
int i;
L=(LinkNode *)malloc(sizeof(LinkNode));
r=L;
for (i=0;i<n;i++){
s=(LinkNode *)malloc(sizeof(LinkNode));
r->next=s;
r=s;
scanf("%d %d ",&s->c,&s->e);
}
r->next=NULL;
}//建立链表
void change(LinkNode *L){
LinkNode *p=L;
while(p!=NULL){
p=p->next;
p->c=(p->e)*(p->c);
p->e=(p->e)-1;
if(p->next==NULL){
p->c=0;
p->e=-1;
}
}
free(p);
}//求导函数
void DispList(LinkNode *L,int n){
int i=0;
LinkNode *p=L->next;
printf("求导后的系数和指数");
while (i<n) {
printf("%d %d ",p->c,p->e);
p=p->next;
i++;
}
printf("\n");
}//输出链表
void DestroyList(LinkNode *&L){
LinkNode *pre=L,*p=L->next;
while (p!=NULL) {
free(pre);
pre=p;
p=pre->next;
}
free(pre);
}//销毁链表函数
int main(void) {
void CreateListF(LinkNode *&L,int n);
void DispList(LinkNode *L,int n);
void change(LinkNode *L);
void InitList(LinkNode *&L);
void DestroyList(LinkNode *&L);
int m;
LinkNode *L;
InitList(L);
printf("输入系数与指数总数:");
scanf("%d",&m);
printf("输入系数和指数:");
CreateListF(L,m/2);
DispList(L,m/2-1);
DestroyList(L);
return 0;
}
结果运行出来是这样:
输入系数与指数总数:4
输入系数和指数:1,1,1,0,
求导后的系数和指数1 0
要么就是:
输入系数与指数总数:6
输入系数和指数:1,2,
求导后的系数和指数1 0 7738368 0
求大神解答,弄了一下午了,本人将万分感激
用的编译器是DeV.C++