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;}

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

  • 相关阅读:
    java_十进制数转换为二进制,八进制,十六进制数的算法
    vim常用命令 vim键盘布局
    百度HTTPS加密搜索有什么用?
    delete
    hadoop2的automatic HA+Federation+Yarn配置的教程
    MinGW GCC下sleep()函数问题
    delete
    8天学通MongoDB——第一天 基础入门
    8天学通MongoDB——第六天 分片技术
    8天学通MongoDB——第五天 主从复制
  • 原文地址:https://www.cnblogs.com/wuyuankun/p/4184966.html
Copyright © 2011-2022 走看看