資源簡(jiǎn)介
完美的數(shù)據(jù)結(jié)構(gòu)大作業(yè)之選。C語(yǔ)言+鏈表 實(shí)現(xiàn)。不用提前知道多項(xiàng)式項(xiàng)數(shù),可以自動(dòng)排序,可以合并同類項(xiàng),可以進(jìn)行加法、乘法運(yùn)算。VS環(huán)境可運(yùn)行,其他編程軟件找到cpp復(fù)制粘貼即可
代碼片段和文件信息
//#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);???????????????//?創(chuàng)建節(jié)點(diǎn)
Polyn*?SelectSort(Polyn?*Pa);??????????//?選擇排序
Polyn*?MergePolyn(Polyn?*Pa);?????????????//合并同類項(xiàng)
void?PrintPolyn(Polyn?*P);?????????????//?打印多項(xiàng)式
int?cmp(int?a?int?b);?????????????????//?比較函數(shù)
P?AddPolyn(P?Pa?P?Pb);????????????????//?多項(xiàng)式相加
P?MultiPolyn(P?Pa?P?Pb);??????????????//?多項(xiàng)式相乘
/*------------------------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;
}
/*-----------------------打印多項(xiàng)式------------------------------*/
void?PrintPolyn(Polyn*?P)
{
Polyn*?q?=?P->next;
//若多項(xiàng)式為空???
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);
}
/*-----------------------合并同類項(xiàng)------------------------------*/
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;
}
/*-----------------------創(chuàng)建節(jié)點(diǎn)--------------------------------*/
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請(qǐng)輸入系數(shù)和指數(shù)(輸入為(00)時(shí)結(jié)束):\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;????????//存儲(chǔ)最小節(jié)點(diǎn)
Polyn?*pminBefore?=?NULL;??//存儲(chǔ)最小節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)
Polyn?*p?=?NULL;???????????//當(dāng)前比較節(jié)點(diǎn)
???//pfirst?=?NULL;
while?(head?!=?NULL)?????????/*在鏈表中找鍵值最小的節(jié)點(diǎn)。*/
{
/*?注意:這里for語(yǔ)句就是體現(xiàn)選擇排序思想的地方?*/
for?(p?=?head?pmin?=?head;?p->ne
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..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\li
?????文件???????3094??2018-04-06?17:22??Polyn\Polyn\Debug\Polyn.tlog\li
?????文件????????568??2018-04-06?17:22??Polyn\Polyn\Debug\Polyn.tlog\li
?????文件????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論