数据结构-线性表(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; } } 头插法,始终让新结点在第一的位置。