单向链表插入元素操作

本文探讨了如何在单向链表中实现兼容性插入,特别是针对空链表的情况。通过定义一个`LinkListInsert`函数,当给定的位置`pos`小于等于0时,会输出错误信息并返回,如果`pos`大于链表长度,则自动调整为末尾插入。使用一个循环找到插入位置,并创建新节点,通过`link`函数完成插入,最后更新链表的大小。此方法确保了在不同位置插入元素的正确性和链表操作的灵活性。
摘要由CSDN通过智能技术生成

如果链表里没有结点,那么就是空链表,
需要在头部添加元素,当然一个好的插入算法不需要这样子.
兼容性是所有的程序员必备技能.

如何到达兼容性?
还记得单向链表的添加元素操作?
单向链表添加操作 web link
那里有一个link函数采用的是 兼容性,无论哪一个位置,甚至是 empty LinkList都可以进行插入
如何 做呢?
按照位置插入 : 最小值0 最大值是list.size
插入元素思路:
参数: list,pos,value
判断 pos|<=0吗
用c++ cerr 输出错误信息 pos 过于小
pos> list.size;
可以给机会 将pos修改为list.size;
定义一个用来找到pos的位置的结点
取名为current; 当前结点
一套循环 i<pos
根据i来判断 位置
current=current->next/找到下一个结点
直到==pos 退出循环
就找到了插入的位置
创建新结点 并且初始化数据域和指针域
将当前结点和新结点传入link函数
link函数 调用完毕后
当前链表个数+1
调用完毕!

list.size 一个元素都没有

list.size==0

创建新结点

创建新结点

调用link函数

调用link函数

更新链表个数

更新链表个数

插入元素操作完成

插入元素操作完成

list.size 元素大于0

 list.size 元素大于0

创建新结点

创建新结点

调用link函数

调用link函数

调用link函数

调用link函数

更新大小

更新大小

插入元素操作完成

插入元素操作完成

链表插入操作


void LinkListInsert(LinkList& List, int pos, ElemType const& value){

	if (pos <=0) {
		cerr << "pos 过于小" << endl;
		return;
	}else if (pos >= List.size) {
		pos = List.size;
	}


	int i = 0;
	LinkNode* current = List.list;
	for (; i < pos; i++){
		current = current->next;
	}
	LinkNode* newNode = creatorLinkNode(value);
	
	Link(current, newNode);
	
	++List.size;
}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小森程序员

若能帮助到你,小费自愿付费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值