//单循环链表求导

#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");  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值