zoukankan      html  css  js  c++  java
  • 单链表插入操作

    URL:http://jpkc.onlinesjtu.com/CourseShare/Courses/ResourceModule/PreReading.aspx?courseid=701018&nodid=238&chapterid=238&preid=16

    单链表的插入操作

    1)已知线性链表head,在p指针所指向的结点后插入一个元素x.
    在一个结点后插入数据元素时,操作较为简单,不用查找便可直接插入.

    操作过程如下图所示:

    相关的语句如下:

    { s=(slnodetype*)malloc(sizeof(slnodetype));      //申请一个结点s

       s->data=x;          //s的数据域存入x

       s->next=p->next;p->next=s;}          //s结点插入到p结点之后

     

    2)已知线性链表head,在p指针所指向的结点前插入一个元素x.

    前插时,必须从链表的头结点开始,找到P指针所指向的结点的前驱。设一指针q从附加头结点开始向后移动进行查找,直到p的前趋结点为止。然后在q指针所指的结点和p指针所指的结点之间插入结点s。

    操作过程如下图所示:

    相关的语句序列如下:

    {q=head;      //q在程序中是用来表示结点p 的直接前驱结点,在寻找之前,先对q初始化,指向头结点

      while(q->next!=p) q=q->next;    //寻找p结点的前驱结点q
      s=(slnodetype*)malloc(sizeof(slnodetype));      //创建新结点s
      s->data=x;     //新结点s的数据域保持数据x
      s->next=p;     // 接下来两个语句用于将s 结点插入到q结点之后

      q->next=s;}

    阅读此篇文章时,注意到在单链表中某个结点之前或者之后插入一个新的结点的操作是完全不一样的。

  • 相关阅读:
    《单元测试之道C#版——使用NUnit》测试哪些内容 RightBICEP
    《领域驱动设计》读书笔记(三) 消化知识
    法雷数列浅谈 RL
    四种常用最短路径算法模板 RL
    PIG 学习笔记1
    readme
    隐藏系统队伍框架
    关于时间的一些函数
    两个作用相同的宏.
    自动拾取确认,自动复活确认
  • 原文地址:https://www.cnblogs.com/wuyuankun/p/4184966.html
Copyright © 2011-2022 走看看