資源簡介
完美的數據結構大作業之選。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\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個文件信息
評論
共有 條評論