#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct
{
int exp;//指数
int coef;//系数
}ElemType;
typedef struct List
{
ElemType data;
struct List *next;
}NODE,*Node;
Node create_List();
void printList(Node);
void derivation_List(Node);//求导
int main(void)
{
Node Head;
Head=create_List();
printList(Head);
derivation_List(Head);
return 0;
}
Node create_List()
{
Node Head,p,s;
int coef,exp;
Head=(Node)malloc(sizeof(NODE));
Head->next=NULL;//初始化。
p=Head;
printf("请输入系数和指数。列如(2,1):");
while(scanf("%d,%d",&coef,&exp)==2&&coef!=0)
{
s=(Node)malloc(sizeof(NODE));
s->data.coef=coef;
s->data.exp=exp;
p->next=s;
p=s;
}
getchar();
p->next=Head;
return Head;
}
void derivation_List(Node Head)
{
Node p,r;
printf("函数求导为:");
for(p=Head;p->next->next!=Head;p=p->next)//p是头结点开始的。
{
if(p->next->data.exp!=0)//如果系数为0.
{
p->next->data.coef*=p->next->data.exp;
p->next->data.exp-=1;
printf("%d^%d ",p->next->data.coef,p->next->data.exp);
}
else
{
r=p->next;
p->next=r->next;
free(r);
}
//if(p->next==Head)
// break;
}
printf("\n");
return ;
}
void printList(Node Head)
{
Node p = Head->next;
if(!p)
{
printf("the list is empty!\n");
return;
}
printf("the list is : ");
while(p)
{
printf("%d,%d ",p->data.coef,p->data.exp);
p = p->next;
if(p == Head)
break;
}
printf("\n");
}
#include <malloc.h>
#include <stdlib.h>
typedef struct
{
int exp;//指数
int coef;//系数
}ElemType;
typedef struct List
{
ElemType data;
struct List *next;
}NODE,*Node;
Node create_List();
void printList(Node);
void derivation_List(Node);//求导
int main(void)
{
Node Head;
Head=create_List();
printList(Head);
derivation_List(Head);
return 0;
}
Node create_List()
{
Node Head,p,s;
int coef,exp;
Head=(Node)malloc(sizeof(NODE));
Head->next=NULL;//初始化。
p=Head;
printf("请输入系数和指数。列如(2,1):");
while(scanf("%d,%d",&coef,&exp)==2&&coef!=0)
{
s=(Node)malloc(sizeof(NODE));
s->data.coef=coef;
s->data.exp=exp;
p->next=s;
p=s;
}
getchar();
p->next=Head;
return Head;
}
void derivation_List(Node Head)
{
Node p,r;
printf("函数求导为:");
for(p=Head;p->next->next!=Head;p=p->next)//p是头结点开始的。
{
if(p->next->data.exp!=0)//如果系数为0.
{
p->next->data.coef*=p->next->data.exp;
p->next->data.exp-=1;
printf("%d^%d ",p->next->data.coef,p->next->data.exp);
}
else
{
r=p->next;
p->next=r->next;
free(r);
}
//if(p->next==Head)
// break;
}
printf("\n");
return ;
}
void printList(Node Head)
{
Node p = Head->next;
if(!p)
{
printf("the list is empty!\n");
return;
}
printf("the list is : ");
while(p)
{
printf("%d,%d ",p->data.coef,p->data.exp);
p = p->next;
if(p == Head)
break;
}
printf("\n");
}