数据结构-线性表(4)
单链表的整表创建
顺序存储结构的创建,其实就是一个数组的初始化,即声明一个类型和大小的数组并赋值的过程。
单链表不像顺序存储结构那么集中,可以很散,是一种动态结构。
对于每个链表来说,所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况
和实际的需求即时生成。
单链表的创建过程就是一个动态生成链表的过程。即从 “空表” 的初始状态起,依次建立各元素的节点,
并逐个插入链表。
单链表整表创建的算法思路:
- 声明一个节点p和计算器遍历i;
- 初始化一空链表L;
- 让L的头结点的指针指向NULL,即建立一个带头结点的单链表;
- 循环
- 生成一个新节点赋值给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(szieof(Node));
p->data =rand() * 100 + 1;
p->next = (*L)->next;
//插入到表头
(*L)->next = p;
}
}
头插法,始终让新结点在第一的位置。


