单链表的插入第i个元素

本文详细阐述了单链表中插入元素的算法步骤及其实现过程,包括定位插入位置、创建新节点、调整节点连接等关键操作。通过C语言代码示例,深入理解单链表数据结构的动态特性。

单链表的插入

单链表第i个数据插入结点的算法思路:
1.声明一结点p指向链表头结点,初始化j从1开始;
2.当j<i时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1;
3.若到链表末尾p为空,则说明第立个元素不存在;否则杳找成功,在糸统中生成一个空结点S
4.将数据元素e赋值给s->data;然后单链表的插入语句;

//假设存储元素e的节点为s,要实现s插入到ai和ai+1之间,C语言代码实现
 s->next= p->next;
 p->next =s;          //这两个语句不能调换

在这里插入图片描述

typedef int Status;
//可以用C语言结构指针来描述单链表:
typedef struct Node
{
	ElemType data;   //数据城
	struct Node*Next;//指针域
}Node;
typedef struct Node* LinkList;
LinkList p;
Status DeletElemLinklist(LinkList l,int i, int  e)
{
	int j;
	LinkList s;
	p=p->Next;        	//p指向表头
	for (j = 1; j < i; ++j)
	{
		p=p->Next;        //p指向第i个节点
		if (p==Null)
		{
			return err;
		}
	}
	s=(LinkList)malloc(sizeof(Node));	//自己给结构体指针申请内存,
										//因为CPU会为这个指针开辟内存,
										//但是此时这个大小是4(如果是32位的CPU的话)
										//所以这个空间不足以存储结构体的数据成员,就会引发错误

	
	s->data=e;
										
	s->Next= p->Next;
 	p->Next =s;          //这两个语句不能调换
 	
 	return success;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值