Data Structure(1-6)---單鏈表的整表創建

單鏈表的創建過程就是一個動態生成鏈表的過程。即從“空表”的初始化狀態起,依次建立各元素結點,並逐個插入鏈表。

單鏈表整表創建的算法思路:

  1. 聲明一指針p和計數器變量i;
  2. 初始化一空鏈表L;
  3. 讓L的頭結點的指針指向NULL,即建立一個帶頭結點的單鏈表;
  4. 循環:

    • 生成一新結點賦值給p;
    • 隨機生成一數字賦值給p的數據域p->data;
    • 將p插入到頭結點與前一新結點之間。
/*隨機產生n個元素的值,建立帶頭結點的單鏈線性表L(頭插法)*/
void CreateListHead(LinkList *L,int n)
{
    LinkList p;
    int i;
    srand (time(0));    /*初始化隨機數種子*/
    *L=(LinkList)malloc(sizeof(Node));
    (*L)->next=NULL;    /*先建立一個帶頭結點的單鏈表*/
    for(i=0;i<n;i++)
    {
        p= (LinkList)malloc(sizeof(Node));   /*生成新結點*/
        p->data=rand()%100+1;         /*隨機生成100以內的數字*/
        p->next=(*L)->next;
        (*L)->next=p;                 /*插入到表頭*/
    }
}
/*隨機產生n個元素的值,建立帶頭結點的單鏈線性表L(尾插法)*/
void CreateListTail(LinkList *L,int n)
{
    LinkList p,r;
    int i;
    srand (time(0));    /*初始化隨機數種子*/
    *L=(LinkList)malloc(sizeof(Node));
    r=*L;               /*r爲指向尾部的結點*/
    for(i=0;i<n;i++)
    {
        p= (Node *)malloc(sizeof(Node));   /*生成新結點*/
        p->data=rand()%100+1;         /*隨機生成100以內的數字*/
        r->next=p;                    /*將表尾終端結點的指針指向新結點*/
        r=p;                 /*將當前新結點定義爲表尾終端結點*/
    }
    r->next=NULL;            /*表示當前鏈表結束*/
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章