链表的插入和删除

	while (NULL!=p && i<pos-1)   //插入
	{
		p = p->pNext;
		++i;
	}
	
	if (NULL==p || i>pos-1)
	{
		return false;
	}
        while (NULL!=p->pNext && i<pos-1)   //删除
	{
		p = p->pNext;
		++i;
	}
	
	if (NULL==p->pNext || i>pos-1)
	{
		return false;
	}

pos为位置,

1.不正常运行:

(1)位置为(pos<1),依靠(i>pos-1)来报错,

(2)比链表结点个数多(插入需要多2)的用NULL!=p/(p->pNext)终止循环,用NULL== p/(p->pNext)报错,即return false

***产生 插入:NULL!=p  NULL == p 和 删除:NULL!=p->pNext   NULL==p->pNext的区别:

(1)插入尾结点后面即尾结点-->pNext

(2)不能删除尾结点后面即尾结点->pNext所指结点(不存在)

所以 插入 可以比 删除 多1个处理位置


2.正常运行:

(1)位置pos=1的时候,跳过while和if

(2)p最后为插入或删除位置的前一个结点 依靠   i<pos-1  控制


总结,体会到头结点的好处。





 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值