单链表的整表创建
单链表的整表创建有两种方法,一种是头插法,一种是尾插法。创建单链表的过程就是一个动态生成链表额过程。即从“空表”
的初始状态起,依次建立起各个元素节点,并逐个插入链表。
单链表整表创建的算法思想如下:
1. 声明一指针变量p和计数变量i;
2. 初始化一空链表L;
3. 让L的头结点指针指向NULL,即建立一个带头节点的单链表。
4. 循环。
头插法代码如下:
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;
p->next=(*L)-next;
(*L)-next=p;
}
}
在这段代码里,我们其实用的是插队的方法,就是始终让新节点在第一的位置,这就是头插法。
事实上,我们可以把后来的节点都放在后面,这才是排队的正常思维,所谓的先来后到,就是这个意思。
void CreateListTail(LinkList *L,int n)
{
LinkList p, r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
*r = L;
for (i = 0; i < n;i++)
{
p = (Node *)malloc(sizeof(Node));
p->data = rand() % 100 + 1;
r->next = p;
r = p;
}
r->next = NULL;
}