单链表的链式存储的两种插入方式

Posted 小苹果小可爱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的链式存储的两种插入方式相关的知识,希望对你有一定的参考价值。

/* 头插法建立单链表示例 */

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;
}

最后两句其实就是多增加了一个Node数据类型的变量,用它不停指向最后一个节点。然后在下一次循环中r又帮忙把最后一个节点的Next指针指向新的节点p

以上是关于单链表的链式存储的两种插入方式的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法学习笔记 线性表Ⅱ

线性表的顺序存储结构和链式存储结构

数据结构开发:线性表的链式存储结构

线性表的链式存储——单链表的遍历与优化

线性表的链式存储之单链表的尾插法

线性表的链式存储——顺序表和单链表的对比分析