单链
#include "stdlib.h"
#include "stdio.h"
# define OVERFLOW -2
typedef struct term
{ float coef; //多项式系数
int expn; //多项式指数
struct term *next;
} node;
node *Create(int n)//创建一个n个结点的链表,并给每//个节点数据域赋值 { node *head, *p, *q;//
int i;
head=(node *)malloc(sizeof(node));
if(!head) { printf("分配内存失败!");
exit(OVERFLOW);
}
for(i=0;i
{ p=(node *)malloc(sizeof(node));
if(!p)
{ printf("分配内存失败!");
exit(OVERFLOW);
}
printf("请输入第%d项系数:\n",i+1);
//从键盘读取数据
scanf("%f",&p->coef);
printf("请输入第%d项指数:\n",i+1);
scanf("%d",&p->expn);//从键盘读取数据
if(i==0)
//如果是第一个节点,则指针q、head同时指向该第一个实节点 head->next=q=p;
else //否则一个节点一个节点往后接
{ q->next=p;
p->next=NULL;
q=p;
}
}
return(head);//返回所建链表头指针
}
int cmp (node *m,node *n )
//比较两个指数大小,并返回-1或0或1
{ if(m->expnexpn)
return -1;
else if(m->expn==n->expn)
return 0;