链表插入的三种方式

链表的插入:
一、头插
1、判断空链 :
a:新节点指向NULL
b: 头指向新节点
2、非空链
a: 新节点指向头(第一个节点)
b: 头指向new
综上: 不需判断直接在头操作
代码:

void insert_head(Node ** head , Node * new)
{
	new = * head;
	* head = new;
}

二、中间插
1、判断空链表
2、非空
遍历找位置
找到 未找到
是头 不是头

是头:
new -> next = * head;
* head = new;
不是头:
new -> next = pre -> next;
pre -> next = new;
未找到:(补在链尾,此时cur为链尾指向的NULL)
pre -> next = new
new -> next = NULL

代码:

void insert_mid(Node ** head , Node * new)
{
	Node * cur = NULL;
	Node * pre = NULL;
	if(* head == NULL){
		printf(“it is empty\n”);
		return;
	}
	else{
		cur = * head;
				放前面
		while(cur != NULL && cur -> data != new -> data){
			pre = cur;
			cur = cur -> next;
		}
		if(cur == NULL){
			pre -> next = new;
			new -> next = NULL;
		}
		else{
			
			if(* head == cur)
			{
				new -> next = * head;
				* head = new;
			}
			else
			{
				new -> next = pre -> next;
				pre -> next = new;
			}
		}
	}
}

三、尾插
1、判断空链
a、插入第一个节点
2、非空链
a、找到链尾
b、将新节点插入链尾

代码:

void insert_tail(Node ** head , Node * new)
{
	Node * cur = NULL;

	if(* head == NULL)
	{
		printf(“it is empty\n”);
		return;
	}
	else
	{
		cur = * head;
		while(cur != NULL )
		{
			cur = cur -> next;
		}
		cur -> next = new;
		new -> next = NULL;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值