回覆列表
  • 1 # 使用者3136867717565

    void insert(NODE **phead ,int data)

    {

    NODE *p1=*phead,*p2=NULL,*p;

    while(p1 !=NULL)

    {

    if(datax)

    {

    p=(NODE *)malloc(sizeof(struct node));

    p->x=data;

    p->next=p1;

    if( 1 p2==NULL ) /*若插入的節點將成為頭節點*/

    ( 2 *phead )=p;//將頭節點指標指向當前節點

    else // 如果不是頭節點,直接將p1前的一個節點也就是p2所在的節點和當前插入節點連線

    p2->next=p;

    break; // 跳出迴圈,插入已經完成,函式會馬上返回。

    }

    // 可能要新增以下兩行程式碼才會工作正常

    p2 = p1;

    p1 = p2->next;

    }

    if(p1==NULL) // 如果沒有頭節點直接新增

    {

    p=(NODE*),alloc(sizeof(struct node));

    p->x=data;

    p->next=( 3 NUll ); // 設定頭節點的後向指標

    if( 4 p2==NUll )/* 若插入的節點將成為頭節點*/

    ( 5 *phead )=p;

    else // 以下程式碼根本就是多餘的

    p2->next=p;

    }

    }

  • 中秋節和大豐收的關聯?
  • 夢見自己生了一個小孩有什麼預兆嗎?