交换P所指结点与其下一个结点的位置

交换P所指结点与其下一个结点的位置

题目

已知线性表的第一个结点由list指出,请写一个算法,交换P所指结点与其下一个结点的位置(假设p指向的不是链表中的最后一个结点)。

分析

算法分两部分

  • 第一:当p所指的是链表的第一个结点时;
  • 第二:当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 ;    
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值