方法:

想要在链表第i个元素前面插入新结点,则需要将指针指向第i-1个元素,从而将其next域中保存的第i个元素地址赋值给新结点,实现链接。

void InserttoList(LinkList head,int i,int number)
//在带头结点的单链表head中第i个位置插入值为number的新结点
{LinkList p= head;   //p 和 j 的初始化问题 int j = 0;while(p && j<i-1){p = p->next; //往后移动 j++; //计数器 }if(!p || j>i)cout << "插入失败";else{LinkList new_LNode = new LNode;new_LNode -> data = number;new_LNode -> next = p -> next; //将新结点的指针域指向结点aip->next = new_LNode;PrintList(head);}}
LinkList p= head;
int j = 0;
while(p && j<i-1){....}

代码中创建了一个指向头结点的指针变量,初始化起点并非首元结点,所以要想在第i个位置插入,while的循环次数需为i-1次;
若初始化起点为首元结点,即

LinkList p= head->next;

则while循环次数为i-2;
从而根据循环次数要求去初始化j或改变循环结束的条件。

实例展示:

int main()
{LinkList head = new LNode;head->next = NULL;     //头结点next为null int a[] = {1,2,3,4,5,6}; CreateListTail(head,a); //尾插创建链表InserttoList(head,4,7);
}
LinkList p= head->next;
int j=1;
while(p&&j<i){...}

循环次数为i-1,实际只需i-2,打印结果为 1 2 3 4 7 5 6
数字‘7’插在了第五位。

在单链表(带头结点)中的第i个位置前面插入一个新结点的初始化问题相关推荐

  1. 【 C 】在单链表中插入一个新节点的尝试(二)

    在上篇博文中:[ C ]在单链表中插入一个新节点的尝试(一),我们最后提到了如果向单链表的开头(起始位置)插入一个节点,上篇博文中给出的程序显然完成不了这任务. 这篇博文中,我们将解决这个问题,给出一 ...

  2. 【 C 】在单链表中插入一个新节点的尝试(一)

    根据<C和指针>中讲解链表的知识,记录最终写一个在单链表中插入一个新节点的函数的过程,这个分析过程十分的有趣,准备了两篇博文,用于记录这个过程. 链表是以结构体和指针为基础的,所以结构体和 ...

  3. C语言之单链表打印(遍历),查询,定位,插入,删除,链表长度

    生活记录 先聊家常,不想看废话的请直接跳到下面看代码分析. 大半个月没有更新博客了,大半个月也做了很多事情.依旧被困在英国,并且得知下个月的机票又又又被取消了:第二遍参加了某大公司的机试以及再次的失败 ...

  4. 【 C 】在双链表中插入一个新值的简明程序

    上两篇博文讲了如何在单链表中插入一个值: [ C ]在单链表中插入一个新节点的尝试(一) [ C ]在单链表中插入一个新节点的尝试(二) 这篇博文讲解如何在双链表中插入一个值. 单链表的替代方案就是双 ...

  5. 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)

    时间:2014.04.26 地点:基地 ------------------------- 一.题目 题目是非常easy和基础,就是在单链表的第i个位置后插入一个节点.要求写代码,5分钟之内完毕.面腾 ...

  6. 【 C 】简化双链表插入函数(对在双链表中插入一个新值的简明程序的简化)

    目录 背景 第一个技巧是语句提炼(statement factoring) 第二个简化技巧 最终简化版本 背景 上篇博文:[ C ]在双链表中插入一个新值的简明程序,讲了一个简明的双链表插入函数,那个 ...

  7. html 点击新建窗口,【单选题】在HTML中,若实现单击超链接时,弹出一个新的网页窗口,下列的()选项符合要求。 A. 节目 B. 节目 C. 节目 D. 节目...

    [单选题]在HTML中,若实现单击超链接时,弹出一个新的网页窗口,下列的()选项符合要求. A. 节目 B. 节目 C. 节目 D. 节目 更多相关问题 扩展不确定度为()Ω,取包含因子k=2.A.0 ...

  8. 数据结构:单链表——带头结点与不带头结点步骤详解

    单链表:带头结点与不带头结点详解 在本人的另一篇文章中,通过java实现了带头结点和不带头结点的单链表,有兴趣的小伙伴可以去看下数据结构(一):链表(Linked List) 这两天回顾下链表的知识, ...

  9. 单链表———带头结点跟不带头结点的区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.单链表:带头结点跟不带头结点 二.使用步骤 总结 前言 数据结构中单链表的创建 带头结点跟不带头结点的区别 一.单 ...

最新文章

  1. python比c语言好学吗-对于初学者而言,python和 c语言先学哪个好
  2. Linux基本网路配置及软件包的安装
  3. LeetCode Algorithm 剑指 Offer 28. 对称的二叉树
  4. POJ - 1475 Pushing Boxes(bfs套bfs)
  5. 刚进职场的程序员,请万分珍重你的第一份工作,不要轻易辞职!
  6. 自制时间比对函数处理 比对过去时间与当前时间相差多少年多少月多少周多少分 多少秒...
  7. 04-3. 统计素数并求和(20)
  8. window7 右键菜单显示-》在此处打开命令窗口
  9. Intellij IDEA--配色方案/主题/风格/样式--自定义/配置
  10. 【ESP32-IDF】02-2 外设-触摸传感器
  11. express 内存溢出问题分析定位
  12. 计算机基金经理排名,2019年基金经理排行_2017年一季度 基金经理排行榜大揭秘 规模 盈利 经验...
  13. QQ群创建者和管理员
  14. 大学计算机李凤霞课本百度云,大学计算机
  15. php排版word文档试卷,用word做试卷的排版
  16. 如何利用爬虫工具实现竞品价格监控
  17. 盘点程序员的花式赚外快的骚操作
  18. FL Studio教程之Gross Beat插件讲解
  19. 2018-2019赛季的前一半
  20. 计算机画面的音乐素材,电脑作品制中素材的3.ppt

热门文章

  1. linux保险箱软件,360保险箱的保护功能 - 不怕盗号木马 奇虎360保险箱抢鲜试用(组图)_Linux安全_Linux公社-Linux系统门户网站...
  2. Unity之IOS和Android安装包大小优化
  3. java 中调用支付宝支付功能的接口
  4. 计算机网络课程设计(模拟总公司、分公司的局域网)
  5. 业精于勤荒于嬉,行成于思毁于随
  6. Landsat影像的辐射定标和大气校正
  7. Unity 接入 Android ShareSDK
  8. PyQt5——显示图片
  9. 【图像去噪】基于matlab多种自适应均值滤波图像去噪【含Matlab 1843期】
  10. 新闻稿编辑公司哪家好