【数据结构】尾插法和头插法-单链表的创建和销毁

前文《【数据结构】链表元素查找、插入和删除-线性表的链式存储》记过了链表的元素查找、插入和删除,本文记链表的创建。

目录

头插法和尾插法概述

 代码

头插法

 尾插法

单链表的销毁

 其他

单链表的初始化

单链表的长度

查找元素

单链表的显示

测试代码


头插法和尾插法概述

链表的创建有两种方法,一种是头插法(下图),另一种是尾插法。

头插法是直接将头结点的下一个节点交给新节点,然后头结点指向新节点。

尾插法是直接让单链表的最后一个节点的指向新节点,然后让新节点指向NULL

尾插法时,千万不要忘了最后一个节点指向NULL,否则会出大错!无论什么方法干什么,任何时候单链表的最后一个节点都要指向NULL。(注意说的是单链表哈,循环链表和双链表不是这样滴)

 代码

头插法

本代码的链表是带头结点的。用随机函数生成链表数据。

status CreateList_LkHead(LinkList& L,int n)//头插法
{
	LinkList q; //自由节点,用来放插入节点
	int i;

	if (!L)//如果链表没有初始化就先初始化
	{
		L = (LinkList)malloc(sizeof(LNode)); //创建一个头结点
		if (!L)exit(ERROR);
			L->next = NULL;//先建立一个头结点并指向NULL
	}
	//printf("please in put %d inttype data\n", n);
	for (i = n; i > 0; i--)//头插法是逆序的
	{
		q = (LinkList)malloc(sizeof(LNode));//每次都重新申请
		if (!q)exit(ERROR);

		//scanf_s("%d", &q->data);
		q->data = rand()%100;//填充数据
		q->next = L->next;
		L->next = q;
	}
	return OK;
}

需要注意的是,先创建一个头结点并将其指向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值