Data Structure(1-6)---单链表的整表创建

来源:互联网 发布:spss22 mac版教程 编辑:程序博客网 时间:2024/05/23 15:08

单链表的创建过程就是一个动态生成链表的过程。即从“空表”的初始化状态起,依次建立各元素结点,并逐个插入链表。

单链表整表创建的算法思路:

  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;            /*表示当前链表结束*/}
0 0
原创粉丝点击