C语言链表应用:一元多项式加法运算

本文介绍了如何使用C语言通过链表实现一元多项式的加法运算。首先讲解了线性表和链表的基础知识,然后定义了表示多项式的链表结构体,并提供了创建链表、输出链表、排序链表的函数。重点在于实现多项式相加的函数,通过将第二个多项式加到第一个多项式中并去除系数为0的节点来完成运算。文章以一个简单的主函数示例展示整个流程。
摘要由CSDN通过智能技术生成

先科普一下线性表的相关知识。线性表,即由n个性质相同的数据元素组成的有序序列。线性表是最基础的线性结构,也是最基本的数据结构形式。因此学好线性表,也是学习其余数据结构的基础。

而线性表分为两类:顺序表和链表。

顺序表的最大特点,既存储该表数据元素的存储单元是连续的(话说这为什么算“顺序”啊……)。而链表则与之相反,是一种靠指针链接的,用任意存储单元存储数据元素的表,指针,就是该类表的“链”。而两表当中,链表的使用居多(至少凭我目前短浅的阅历是没怎么用过顺序表的)。

所以,相较于顺序表而言,链表的应用居多,这里就以多项式加法为例说明。

首先给出多项式加法的链表结构体:



typedef int DataType;

 

struct Node

{
   

       DataType
num;

       DataType
modulus;

       struct
Node* next;

} ;

 

typedef struct Node *PNode;

typedef struct Node *LinkList;

需要注意,三个typedef的作用:第一个typedef是为了可以更轻松的更改链表的存储元素结构,下面程序凡是涉及到链表存储元素时,都用其后面的DataType代替,这样一来,当之后需要更改链表存储元素结构时,可以直接从最上方的typedey入手,省时省力(当然输出函数里的还是需要注意的就是啦)。下方的两个typedef,一是为了简化定义变量的繁琐的关键字,二是便利其他的程序员阅读该程序,可以轻易的分清定义变量的作用。

该结构体中只定义了两个数字,num用于表示多项式系数,modulus则是表示第一个指数,当然这里直接将该多项式默认为了一元多项式,后续可以视情况增加。

随后是创建链表:



LinkList GreatList(LinkList head)

{
   

       PNode
cur=NULL;

       PNode
tail=head;

       DataType
data1,data2;

       scanf("%d,%d",&data1,&data2);

       while(data1
!= 0 || data2 != 0)

       {
   

              cur=(struct
Node*)malloc(sizeof(struct Node));

              cur->num=data1;

              cur->modulus=data2;

              

              tail->next=cur;

              tail=cur;

              tail
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值