Pが指すノードと次のノードの位置を交換します

Pが指すノードと次のノードの位置を交換します

トピック

線形リストの最初のノードがリストによって示されている場合、Pが指すノードと次のノードの位置を交換するアルゴリズムを記述してください(pがリンクリストの最後のノードではないと仮定します) 。

分析

アルゴリズムは2つの部分に分かれています

  • 最初:pがリンクリストの最初のノードを参照する場合。
  • 2番目:Pがリンクリストの中間ノードを参照する場合。

コード

// 交换P所指结点与其下一个结点的位置
LinkList EXCHANGE(LinkList list,LinkList p){    
	LinkList q = list;    
	if (p==q)    {        
		list=list->link;       
		p->link=p->link->link;        
		list->link=p;    
	}else    {        
		while (q->link!=p)   {           
			q=q->link;        
		}        
		// 这里的顺序不能换,避免断链。        
		q->link=p->link;        
		p->link=p->link->link;        
		q->link->link=p;            
	}    
    return list ;    
}

おすすめ

転載: blog.csdn.net/honeylife/article/details/98876996