单链表(带头结点)按位序插入元素



基础知识:

  1.带头结点的单链表中头结点没有存放数据只存放了指向位序为1的结点的指针(可以近似理解为位序为0 的结点,但实际上结点的位序从1开始);

  2.所需结构体的定义

    typedef struct LNode{

      ElemType  data;  //数据域

      struct LNode *next;  //指针域

    }LNode,*LinkList;

 


代码实现:

  bool ListInsert(LinkList &L,int i,ElemType e)

  {

    if ( i < 1 )        //如果 i < 1,所找的位序不合法

      retuen false;

    LNode *p;        //指针 p 指向当前扫描到的结点

    int j=0;         // j 表示当前指向的是第几个结点

    p = L;           // L 指向头结点(不存数据),将 p 也指向头结点

    while(p!=null&&j<i-1)    //循环找到第 i-1 个结点

    {

      p=p->next;

      j++;

    }

    if ( p == null )      // i 值不合法

      return false;

    LNode *s = (LNode *) malloc  ( sizeof(LNode *) );  //申请一个空间存放即将插入的结点 s

    s -> data =e;          //将要插入的值 e 放进结点 s 的数据域

    s -<next = p -> next;       //结点 s 的指针指向下一个结点(即原来结点 p 指向的结点)

    p -> next = s;          //将结点 p 指向结点 s

    return true; 

  }

 


Notes:

  1. s -<next = p -> next; p -> next = s; 这两步的顺序不能颠倒

  2. 主语位序和结点,位序=结点-1

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM