一、头文件
二、链表结构
三、链表的初始化
四、链表的打印
五、插入元素
六、多项式相加
七、测试函数
八、main函数
九、测试结果
十、总结
一、头文件
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
二、、链表结构
typedef struct LinkNode
{
int coef;
int expon;//指数
struct LinkNode *next;
}*LinkList,*NodePtr;
三、链表的初始化
//链表的初始化
LinkList initLinkList()
{
NodePtr headNode = (NodePtr)malloc(sizeof(struct LinkNode));
headNode->coef = 0;
headNode->expon = 0;
headNode->next = NULL;
return headNode;
}
四、打印链表
//打印链表
void printList(LinkList list)
{
NodePtr p = list->next;
while(p!=NULL)
{
printf("%d * 10^%d+",p->coef ,p->expon );
p = p->next;
}
printf("\n");
}
五、插入元素
//插入元素
void appendElement(LinkList list,int newcoef,int newexpon)
{
NodePtr p,q;
q = (NodePtr)malloc(sizeof(struct LinkNode));
q->coef = newcoef;
q->expon = newexpon;
q->next = NULL;
p = list;
while(p->next!=NULL)
{
p = p->next;
}
p->next = q;//将q接到p后面
}
六、多项式相加减
//多项式相加
void addList(NodePtr paraList1,NodePtr paraList2)
{
NodePtr p,q,r,s;
p = paraList1->next;
q = paraList2->next;
r = paraList1;
free(paraList2);
while((p != NULL)&&(q != NULL))
{
if((p->expon) < (q->expon) )
{
r = p;
p = p->next ;
}
else if(p->expon == q->expon )
{
p->coef = p->coef + q->coef ;
if(p->coef !=0)
{
r = p;
p = p->next;
s = q;
q = q->next;
free(s);
}
else if(p->coef == 0)
{
s = q;
q = q->next;
free(s);
s = p;
p = p->next ;
free(s);
}
}
else if((p->expon) > (q->expon ))
{
r->next = q;
r = q;
q = q->next;
}
}
if(p==NULL)
{
r->next = q;
}
else
{
r->next = p;
}
printf("Addition ends.\n");
}
七、测试函数
void additionTest(){
LinkList tempList1 = initLinkList();
appendElement(tempList1, 7, 0);
appendElement(tempList1, 3, 1);
appendElement(tempList1, 9, 8);
appendElement(tempList1, 5, 17);
printList(tempList1);
LinkList tempList2 = initLinkList();
appendElement(tempList2, 8, 1);
appendElement(tempList2, 22, 7);
appendElement(tempList2, -9, 8);
printList(tempList2);
printf("\n");
addList(tempList1, tempList2);
printList(tempList1);
}
八、main函数
void main(){
additionTest();
printf("Finish.\r\n");
}
九、测试结果
十、总结
细节问题,一定要注意到,同时注意要分情况讨论问题,很多问题表面看起来不好下手,但实际上当分成了多个模块,一个模块地区探究,就会发现轻松了许多,俗称大事化小,同时困惑时画图帮助。