单链表第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; //这两个语句不能调换
1
2
3
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;
}
————————————————
版权声明:本文为CSDN博主「E-C-E」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42050661/article/details/100119801