首页 > 其他 > 详细

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

时间:2016-05-30 08:46:10      阅读:227      评论:0      收藏:0      [点我收藏+]

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

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

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

原文:http://www.cnblogs.com/sengling/p/5541048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!