单链表的插入第i个元素

单链表的插入

单链表第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;
}
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的动态单链表查找第i个元素的主函数代码示例: ```c++ #include <iostream> using namespace std; struct Node { int data; Node* next; }; Node* head = NULL; void insert(int value) { Node* newNode = new Node; newNode->data = value; newNode->next = head; head = newNode; } int search(int index) { Node* current = head; int count = 0; while (current != NULL) { if (count == index) { return current->data; } count++; current = current->next; } return -1; // Index out of bounds } int main() { insert(5); insert(10); insert(15); insert(20); insert(25); int index = 3; int result = search(index); if (result == -1) { cout << "Index out of bounds" << endl; } else { cout << "Element at index " << index << " is " << result << endl; } return 0; } ``` 在上面的示例中,我们首先定义了一个`Node`结构体,其中包含一个整数`data`和一个指向下一个节点的指针`next`。然后,我们定义了一个全局指针`head`,表示动态单链表的头节点。 我们编写了一个名为`insert`的函数,用于在链表的头部插入新的节点。该函数接受一个整数参数`value`,创建一个新的节点,并将其插入到链表的头部。 然后,我们编写了一个名为`search`的函数,用于查找链表中的第i个元素。该函数接受一个整数参数`index`,表示要查找的元素的索引。函数遍历链表,每次遍历都将计数器`count`加1,直到找到第i个元素。在找到该元素后,函数返回该元素的值。 最后,在`main`函数中,我们向链表中插入了一些元素,然后调用`search`函数查找第3个元素。如果找到了该元素,则输出该元素的值。否则,输出“Index out of bounds”表示索引超出了链表的范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值