单链表的基本操作(2021-02-27)

1.节点的插入、删除

核心:找到所需处理节点的上一个节点的位置。

int i = 1; //计数器
PNODE p = pHead->pNext;

while (NULL !=p && i < pos-1) //pos:所需处理节点的位置,pos-1:前一个节点的位置
{
	p = p->pNext;
	++i;
}

if (i > pos-1 || NULL == p)
	return false;

时间一长,再写代码便会出现很多小错误,抓住核心便不会出错。

2. 清空与销毁链表的区别

在这里插入图片描述
清空

void clearList(PNODE pHead){
	PNODE p;
	while(NULL != pHead->pNext){
		p = pHead->pNext; //保留头结点和头指针
		pHead->pNext = p->pNext;
		free(p);
	}
}

销毁

void destoryList(PNODE pHead){
	PNODE p ;
	while(NULL != pHead){
		p = pHead;  //从头结点开始,毫不保留
		pHead = pHead->pNext;
		free(p);
	}
}

3. 按值查找

查找值的地址(若能查找到,则返回其地址,否则返回NULL)

PNODE locateElement(PNODE pHead, int e){
	PNODE p = pHead->pNext;
	while(p && p->data != e){
		p = p->pNext;
	}
	return p;
}

查找值的位置序号(若能查找到,则返回其位置序号,否则返回0)

int locateElement(PNODE pHead, int e){
	int pos = 1;
	PNODE p = pHead->pNext;
	while(p && p->data != e){
		p = p->pNext;
		pos++;
	}
	if(p != NULL)
		return pos;
	else
		return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值