單鏈表(帶頭結點)按位序插入元素



基礎知識:

  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