資料結構之——關於單鏈表的頭插法和尾插法的程式碼和思路
阿新 • • 發佈:2019-01-02
頭插法
思路:每次插入都在第一個節點之前,頭結點之後,那每次插入時的賦值就只要將頭結點的地址賦給插入的節點,然後將插入的節點的地址依次給後面節點就可以了。
1、定義一個要插入的節點q
2、q->data內給值e
3、q->next = p->next;建立後續節點。
4、p->next = q;建立前驅節點。
int FirstInsert(Node *l, ElemType e) { Node *p = l; if(NULL == l) //入參判斷 { return FAILURE; } if(NULL == p) { return FAILURE; } Node *q = (Node *) malloc (sizeof(Node) * 1); if(NULL == q) { return FAILURE; } q->data = e; if(p->next != NULL) { q->next = p->next; } p->next = q; return SUCCESS; }
尾插法
思路:尾插法,即每次插入都插入到連結串列的尾節點之後,那麼這樣就很簡單了,只要把最後一個節點的指標域賦值要插入的節點的地址,要插入節點的指標域為NULL就行了。
1、定義一個節點q,q->data = e; 給要插入的節點給值e
2、p->next = q;連線前驅節點
3、q->next = NULL;無後續節點,賦值為空。
int FinalInsert(Node *l, ElemType e) { Node *p = l; if(NULL == l) { return FAILURE; } while(p->next != NULL) { p = p->next; } if(NULL == p) { return FAILURE; } Node *q = (Node *) malloc (sizeof(Node) * 1); if(NULL == q) { return FAILURE; } q->data = e; q->next = NULL; p->next = q; return SUCCESS; }