1. 程式人生 > >資料結構之——關於單鏈表的頭插法和尾插法的程式碼和思路

資料結構之——關於單鏈表的頭插法和尾插法的程式碼和思路

頭插法

思路:每次插入都在第一個節點之前,頭結點之後,那每次插入時的賦值就只要將頭結點的地址賦給插入的節點,然後將插入的節點的地址依次給後面節點就可以了。

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