節(jié)點(diǎn)圖上p1p2p3是什么意思 C語(yǔ)言如何實(shí)現(xiàn)一元多項(xiàng)式的除法?
C語(yǔ)言如何實(shí)現(xiàn)一元多項(xiàng)式的除法?#定義1#定義假0# includestdio.h#includestdlib.htypedef結(jié)構(gòu){浮動(dòng)系數(shù);int e;} ElementTypetypedef結(jié)構(gòu)
C語(yǔ)言如何實(shí)現(xiàn)一元多項(xiàng)式的除法?
#定義1
#定義假0
# includestdio.h
#includestdlib.h
typedef結(jié)構(gòu)
{
浮動(dòng)系數(shù);
int e;
} ElementType
typedef結(jié)構(gòu)節(jié)點(diǎn)
{
ElementType數(shù)據(jù);
結(jié)構(gòu)節(jié)點(diǎn)* next//那個(gè) 這就是為什么你想定義結(jié)構(gòu)節(jié)點(diǎn)而不是結(jié)構(gòu)。
}Lnode,* LinkList
in head _ creatlinklist(linklist l,int n,element type a[])//通過(guò)頭插入方法創(chuàng)建鏈表。
{
int I;
鏈表頭,p;
l(鏈表)malloc(sizeof(Lnode));
l-nextNULL;
headL
for(i0;在;我)
{
p(鏈表)malloc(sizeof(Lnode));
p-nextNULL;
【我】。coef
p-data.ea[i]。e;
head-nextp;
headp
}
return TURE
}
int GetElement(鏈表L)
{
int m;
mL-data . e;
//printf(%d,m);
返回m;
}
int Comp(int a,int b)
{
如果(ab)
返回1;
else if(ab)
return-1;
其他
返回0;
}
int Union _ LinkList(L1鏈接列表,L2鏈接列表,L3鏈接列表)
{
鏈表p1,p2,p3,flag1,flag2。//標(biāo)志標(biāo)記指針,用于刪除L2中的節(jié)點(diǎn)。
p1l 1-下一個(gè);
p2l 2-下一個(gè);
L3p3L1//L3的變化會(huì)導(dǎo)致L1的變化,也就是L3和L1最終會(huì)是一樣的。
while(p1p2)
{
開關(guān)(Comp(獲取元素(p1),獲取元素(p2)))
{
凱斯·-1:
{
P3-n:
{
P3-n:
{
;
如果()
{
flag1p1
P1 P1-下一個(gè);
免費(fèi)(flag 1);
}
flag2p2
P2P 2-下一個(gè);
免費(fèi)(flag 2);
打破;
}
}
}
P3-next P1 :p 2;
免費(fèi)(L2);
return TURE
}
int Display_LinkList(LinkList L)
{
鏈表p;
pL;
如果(!p)
返回FALSE
while(p-next)
{
PP-next;
printf([%f%,%d]
,,p-data . e);
}
printf(
);
return TURE
}
void main()
{
鏈表a、b、c;
ElementType a1[6]{{1,1},{2,7},{3,3},{4,4},{5,9},{1,10 } };
ElementType a2[4]{{-1,1}、{2,7}、{3,8}、{-5,9 } };
Head_CreatLinkList (a,6,a1);
Head_CreatLinkList (b,4,a2);
display _ LinkList(a);
display _ LinkList(b);
Union_LinkList(a,b,c);
display _ LinkList(c);
}
請(qǐng)編寫在帶頭結(jié)點(diǎn)的單鏈表L上刪除其值為奇數(shù)的所有元素的算法?
#包括
#包括
#define LEN sizeof(結(jié)構(gòu)節(jié)點(diǎn))
結(jié)構(gòu)節(jié)點(diǎn)
{
int num
結(jié)構(gòu)節(jié)點(diǎn)* next
};
int main()
{
結(jié)構(gòu)節(jié)點(diǎn)* creat();
結(jié)構(gòu)節(jié)點(diǎn)*del(結(jié)構(gòu)節(jié)點(diǎn)* head);
void print(結(jié)構(gòu)節(jié)點(diǎn)*);
結(jié)構(gòu)節(jié)點(diǎn)*頭;
head creat();
打印(頭);
Printf(刪除相同節(jié)點(diǎn)后:
);
del(頭);
打印(頭);
返回0;
}
//建立鏈表的功能
結(jié)構(gòu)節(jié)點(diǎn)*creat()
{
結(jié)構(gòu)節(jié)點(diǎn)*頭;
結(jié)構(gòu)節(jié)點(diǎn)*p1,* p2
p1p2(struct Node *)malloc(LEN);
headNULL
int n 0;
P1-num n;
而(p1-num
{
nn 1;
if(n1)head P1;
否則p2-next P1;
p2p1
p1(結(jié)構(gòu)節(jié)點(diǎn)*)malloc(LEN);
P1-num n;
}
p2-nextNULL;
返回(頭);
}
//刪除同一節(jié)點(diǎn)的功能
結(jié)構(gòu)節(jié)點(diǎn)*del(結(jié)構(gòu)節(jié)點(diǎn)*head)
{
結(jié)構(gòu)節(jié)點(diǎn)*p,*q,*f,* r;
phead
而(p!空)
{
RP;
fr-next;
而(f!空)
{
if(f-num 2!0)
{
qf;
r-nextf-next;
ff-next;
免費(fèi)(q);
}
其他
{
RF;
ff-next;
}
}
PP-next;
}
回程頭;
}
//輸出鏈表的函數(shù)
無(wú)效打印(結(jié)構(gòu)節(jié)點(diǎn)*頭)
{
結(jié)構(gòu)節(jié)點(diǎn)* p;
phead
而(p!空)
{
printf(d
,p-num);
PP-next;
}
}