再帰に問題のリスト上の単一のノードを削除するには

指定されたタイトル:再帰アルゴリズムの設計は、リードのノードは、xの値のすべてのノードの単独リンクリストLを削除されません

//(1)删除不带头节点L中所有值为x的节点
void Del_x_1(LinkList &L, ElemType x)
{
	LNode *p;
	if(L == NULL)
		return;
	if(L->data == x)
	{
		p = L;
		L = L->next;
		free(p);         //注意:此处不会断链
		Del_x_1(L,x);
	}
	else
		Del_x_1(L->next,x);
}

ここでの混乱は、単一のリストの前にノードを削除することで、あなたはその前身のポインタを変更するには、ノード、その後、自由落下を見つける必要があります。そして、ここで続けるのはなぜ再帰鎖前駆体を見つけることではないでしょうか?
ここに画像を挿入説明

実際には、L2 == L1->次(すなわちL1->ドメイン1内の次のノードの隣)
を行うL2 = L2->次は、現在次の点3 2ドメインに対応します。(L1->次= L2->次の 。 だから、我々は削除の過程にあるか黙示あなたはノードの前駆体のノードを削除したい知っています)

公開された38元の記事 ウォン称賛13 ビュー4350

おすすめ

転載: blog.csdn.net/YanWenCheng_/article/details/95772138