首頁>Club>
4
回覆列表
  • 1 # 溫馨

    資料結構中,在單鏈表的第一個結點之前附設一個結點,它沒有直接前驅,稱之為頭結點。下面以順序儲存為例來敘述。

    (1) 頭插法建表

    該方法從一個空表開始,讀取陣列a中的字元,生成新結點,將讀取的資料存放到新結點的資料域中,然後將新結點插入到當前連結串列的表頭上,直到結束為止。演算法如下:

    void CreateListF(Snode *&L, ElemType a[], int n)

    { Snode *s; int i;

    L = (Snode *) malloc(sizeof(Snode));

    L->next = NULL;

    for (i=0; i<n;i++)/*改成for (i=n; i>1;i--)可讓節點次序與原陣列元素順序相同。

    { s = (Snode *)malloc(sizeof(Snode));

    s->data = a[i];

    s->next = L->next;

    L->next = s;

    }

    }

    (2) 尾插法建表

    頭插法建立連結串列雖然演算法簡單,但生成的連結串列中結點的次序和原陣列元素的順序相反,若希望兩者次序一致,可採用尾插法。該方法是將新結點插到當前連結串列的表尾上,為此必須增加一個尾指標r,使其始終指向當前連結串列的尾結點。演算法如下:

    void CreateListR(Snode *&L, ElemType a[], int n)

    { Snode *s, *r; int i;

    L = (Snode *) malloc(sizeof(Snode));

    L->next = NULL;

    r = L;

    for (i=0; i<n;i++)

    { s = (Snode *)malloc(sizeof(Snode));

    s->data = a[i];

    r->next = s;

    r = s;

    }

    r-> next = NULL;

    }

  • 中秋節和大豐收的關聯?
  • 可以購買新上市的車嗎?是觀察一段時間再買更合適嗎?