C语言头插法尾插法创建单链表

前言

链表 [Linked List]:链表是由一组不必相连【不必相连:可以连续也可以不连续】的内存结构 【节点】,按特定的顺序链接在一起的抽象数据类型。
下面介绍单链表的创建:

创建节点

链表是由一个个节点构成的,首先我们就要创建节点
首先用结构体创建节点Node

typedef struct Node
{
	int data;			//数据域
	struct Node* next;  //指针域
}LNode, * Linklist;		//LNode为节点,Linklist为zhiz

头插法创建单链表

Linklist CreateFromHead() //头插法创建单链表
{
	Linklist L;			//定义头指针L
	LNode *s;			//定义节点的指针s
	int x;				//定义要输入的数据
	L = (Linklist)malloc(sizeof(Linklist));//为头指针开辟内存空间
	L->next = NULL;		//将头指针的next初始化为空
	//输入数据
	printf("请输入一个整型数:");
	scanf("%d", &x);
	//用循环继续添加数据,当输入为-1时输入完成
	while (x != -1)
	{
		s = (LNode*)malloc(sizeof(Linklist));//为新数据开辟内存空间
		s->data = x;		//将数据存入到节点的data中
		s->next = L->next;	//将新数据的next赋值为头节点的next
		L->next = s;		//将头节点指向新数据
		//继续输入新的数据
		printf("请输入一个整型数:");
		scanf("%d", &x);
	}
	return L;				//返回头节点
}

尾插法创建单链表

Linklist CreateFromTail() //尾插法创建单链表
{
	Linklist L;			//定义头指针L
	LNode *r,*s;		//定义节点的指针r和s,s指向新开辟的数据,r指向尾节点
	int x;				//定义要输入的数据
	L = (LNode*)malloc(sizeof(LNode));//为头指针开辟内存空间
	L->next=NULL;		//将头指针的next初始化为空
	r=L;				//将尾指针指向头指针L
	//输入数据
	printf("请输入一个整型数:");
	scanf("%d", &x);
	//用循环继续添加数据,当输入为-1时输入完成
	while (x != -1)
	{
		s = (LNode*)malloc(sizeof(LNode));//为新数据开辟内存空间
		s->data = x;						//将数据存入到节点的data中
		s->next = r->next;					//将新数据的next赋值为头节点的next
		r->next = s;						//将尾指针指向新数据
		r=s;								//将新插入的节点设为尾指针
		//输入数据
		printf("请输入一个整型数:");
		scanf("%d", &x);
	}
	r->next=NULL;						//将尾指针的next指向NULL
	return L;		//返回头节点
}

总结

头插法和尾插法建立单链表步骤很相似,而尾插法需要将新插入的节点重新设为尾节点,以上就是两种方法创建单链表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值