• 大小: 15.37MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-13
  • 语言: C/C++
  • 标签: C  链表  

资源简介

完美的数据结构大作业之选。C语言+链表 实现。不用提前知道多项式项数,可以自动排序,可以合并同类项,可以进行加法、乘法运算。VS环境可运行,其他编程软件找到cpp复制粘贴即可

资源截图

代码片段和文件信息

//#include
//#include
#include“stdafx.h“
#include
#include

//#define ERROR 0;
//#define OVERFLOW 0;

typedef struct Polyn {
int expn coef;
Polyn* next;
}*P;

P CreatePolyn(Polyn *P);               // 创建节点
Polyn* SelectSort(Polyn *Pa);          // 选择排序
Polyn* MergePolyn(Polyn *Pa);             //合并同类项
void PrintPolyn(Polyn *P);             // 打印多项式

int cmp(int a int b);                 // 比较函数

P AddPolyn(P Pa P Pb);                // 多项式相加
P MultiPolyn(P Pa P Pb);              // 多项式相乘

/*------------------------Dome---------------------------------*/
int main()
{
P Pa Pb Pc Pd;
Pa = (Polyn *)malloc(sizeof(Polyn));
Pb = (Polyn *)malloc(sizeof(Polyn));
Pa = CreatePolyn(Pa);
Pb = CreatePolyn(Pb);


Pd = MultiPolyn(Pa Pb);
Pc = AddPolyn(Pa Pb);

system(“pause“);
return 0;
}
/*-----------------------打印多项式------------------------------*/
void PrintPolyn(Polyn* P)
{
Polyn* q = P->next;
//若多项式为空   
printf(“\n“);
while (q->next != NULL)
{
if (q->coef>0) printf(“%d*x^%d+“ q->coef q->expn);
else if (q->coef < 0) {
printf(“(%d)*x^%d+“ q->coef q->expn);
}
else  printf(““);
q = q->next;
}
if (q->coef>0) printf(“%d*x^%d“ q->coef q->expn);
else printf(“(%d)*x^%d“ q->coef q->expn);
}

/*-----------------------合并同类项------------------------------*/
Polyn* MergePolyn(Polyn *Pa) {
P p pBefore del;
pBefore = Pa->next;
p = pBefore->next;
while (p) {
if (p->expn == pBefore->expn) {
del = p;

pBefore->coef = pBefore->coef + p->coef;
p = p->next;
pBefore->next = p;

free(del);
}
else
pBefore = p;
p = p->next;
}

//PrintPolyn(Pa);
return Pa;
}

/*-----------------------创建节点--------------------------------*/
P CreatePolyn(Polyn *P)
{
Polyn *previous *current *head;
head = (Polyn *)malloc(sizeof(Polyn));
if (!head) exit(0);
head->coef = 0;
head->expn = -1;
head->next = NULL;

previous = head;

int coef expn;
printf(“\n请输入系数和指数(输入为(00)时结束):\n“);
scanf_s(“%d%d“ &coef &expn);

for (; (coef != 0) || (expn != 0);)
{
if (coef != 0) {
current = (Polyn *)malloc(sizeof(Polyn));
current->coef = coef;
current->expn = expn;
current->next = NULL;
previous->next = current;
previous = current;
current = previous->next;
scanf_s(“%d%d“ &coef &expn);
}
else scanf_s(“%d%d“ &coef &expn);
}

P = SelectSort(head);
P = MergePolyn(head);
PrintPolyn(P);
return P;
}

/*------------------------选择排序-------------------------------*/
Polyn* SelectSort(Polyn *head)
{
Polyn *pfirst = NULL;  //有序链表表头指针
Polyn *ptail = NULL;   //有序链表表尾指针
Polyn *pmin = NULL;        //存储最小节点
Polyn *pminBefore = NULL;  //存储最小节点的前驱节点
Polyn *p = NULL;           //当前比较节点

   //pfirst = NULL;
while (head != NULL)         /*在链表中找键值最小的节点。*/
{
/* 注意:这里for语句就是体现选择排序思想的地方 */
for (p = head pmin = head; p->ne

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     34816  2018-04-06 17:22  Polyn\.vs\Polyn\v15\.suo

     文件    3604480  2018-04-06 17:20  Polyn\.vs\Polyn\v15\ipch\821bce403b2aa40d.ipch

     文件   38535168  2018-04-01 08:55  Polyn\.vs\Polyn\v15\ipch\AutoPCH\4ab7d8955a3ff253\POLYN.ipch

     文件    3080192  2018-04-01 11:21  Polyn\.vs\Polyn\v15\ipch\AutoPCH\4f5c1cc49bbb10c7\POLYN.ipch

     文件    3080192  2018-04-06 09:26  Polyn\.vs\Polyn\v15\ipch\AutoPCH\8e337353e6b4e169\POLYN.ipch

     文件   38535168  2018-04-01 10:40  Polyn\.vs\Polyn\v15\ipch\AutoPCH\dbb77071d36785dd\POLYN.ipch

     文件      39936  2018-04-06 17:22  Polyn\Debug\Polyn.exe

     文件     472572  2018-04-06 17:22  Polyn\Debug\Polyn.ilk

     文件    1241088  2018-04-06 17:22  Polyn\Debug\Polyn.pdb

     文件         89  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.log

     文件      36139  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.obj

     文件      31838  2018-04-01 15:30  Polyn\Polyn\Debug\polyn.obj.enc

     文件    2883584  2018-03-28 23:39  Polyn\Polyn\Debug\Polyn.pch

     文件       1606  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\CL.command.1.tlog

     文件      26868  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\CL.read.1.tlog

     文件       1066  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\CL.write.1.tlog

     文件       1312  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\link.command.1.tlog

     文件       3094  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\link.read.1.tlog

     文件        568  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\link.write.1.tlog

     文件        212  2018-04-06 17:22  Polyn\Polyn\Debug\Polyn.tlog\Polyn.lastbuildstate

     文件       5517  2018-03-28 23:39  Polyn\Polyn\Debug\stdafx.obj

     文件     257024  2018-04-06 17:22  Polyn\Polyn\Debug\vc141.idb

     文件     159744  2018-04-06 17:22  Polyn\Polyn\Debug\vc141.pdb

     文件      12274  2018-04-06 17:22  Polyn\Polyn\Polyn.cpp

     文件       8207  2018-03-28 23:23  Polyn\Polyn\Polyn.vcxproj

     文件       1250  2018-03-28 23:23  Polyn\Polyn\Polyn.vcxproj.filters

     文件        165  2018-03-28 23:23  Polyn\Polyn\Polyn.vcxproj.user

     文件        312  2018-03-28 23:23  Polyn\Polyn\stdafx.cpp

     文件        366  2018-03-28 23:23  Polyn\Polyn\stdafx.h

     文件        370  2018-03-28 23:23  Polyn\Polyn\targetver.h

............此处省略18个文件信息

评论

共有 条评论