C语言头插法/尾插法创建有/无头结点的单链表

本文介绍了使用C++编程语言实现头插法和尾插法创建单链表的详细过程,包括带头结点和不带头结点的两种情况。通过示例代码展示了如何动态分配内存、初始化结点以及插入数据,最后给出了测试用例以展示不同插入方法创建的链表结构。

先定义结点:

struct LinkList
{
	int data;
	struct LinkList *next;
};

头插法创建带头结点的单链表的函数:

头插法在每次插入新结点时都将新结点插到第一个结点的位置上,即在链表的头部插入。每次插入时都要先使新结点的后继变为头结点原来的后继,即头结点所链接的原第一个结点,再使头结点的后继变为新结点。

LinkList* CreateListHead(int *arr, int length)	// 头插法创建带头结点的单链表 
{
	int i;
	LinkList *head = (LinkList*)malloc(sizeof(LinkList));	// 创建头结点
	head->data = length;	// 头结点数据域存链表长度
	head->next = NULL;
	
	for(i=0; i<length; i++)
	{
		LinkList *p = (LinkList*)malloc(sizeof(LinkList));    // 为结点申请空间
		p->data = arr[i];    // 节点数据域赋值
		p->next = head->next;	// 头插法 
		head->next = p;
	} 
	return head;	// 返回头结点 
}

头插法创建无头结点的单链表:

LinkList* CreateListHead_noHNODE(int *arr, int length)	// 头插法创建无头结点的单链表
{
	int i;
	LinkList *head;	// 创建头指针  *head此时为一个指向LinkList型数据的指针 
	head = NULL;
	
	for(i=0; i<length; i++)
	{
		LinkList *p = (Lin
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值