记录!!
List Insert( ElementType X, int i, List PtrL)
定义了一个名为Insert的函数,该函数接收三个参 数:一个ElementType类型的X(要插入的元素),一个整数i(插入的位置),和一个指向链表的指针PtrL
{
函数体的开始。
List p, S;
定义了两个指向链表节点的指针p和S。
if(i==1)
检查i是否等于1,即是否要在链表头部插入元素
{
if语句块的开始
s=(List)malloc(sizeof(struct LNode));
为新的链表节点分配内存,并将返回的地址赋值给s(注意:这里s应该是小写的s,而不是大写的S,因 为后续代码使用的是小写s)
S->Data=X;
设置新节点的数据域为X(注意:这里的箭头符号> 应该是->,可能是代码复制时的错误)
S->Next= PtrL;
将新节点的Next指针指向原链表的头节点
return S;
返回新链表的头节点
}
if语句块的结束
p= FindKth(i-1, PtrL);
调用FindKth函数找到链表中第i-1个节点的位置,并将该节点的地址赋值给p
if(p== NULL){
检查p是否为NULL,即是否找到了第i-1个节点
printf(”参数i错”);
如果p为NULL,则输出错误信息(注意:这里的引号使用的是中文引号,应该是英文引号)
return NULL;
返回NULL,表示插入失败
}
if语句块的结束
else{
如果找到了第i-1个节点,则执行以下代码
s=(List)malloc(sizeof(struct LNode));
为新的链表节点分配内存,并将返回的地址赋值给s
S->Data=X;
设置新节点的数据域为X
S->Next= p->Next;
将新节点的Next指针指向第i个位置原来的节点
p->Next=S;
将第i-1个节点的Next指针指向新节点,完成插入操作
return PtrL;
返回原链表的头节点(虽然头节点没有变化,但这是一种常见的做法,因为调用者可能期望函数返回一个指向链表的指针)
}
else语句块的结束
}
函数体的结束
注意:代码中有几个地方可能存在错误或不一致(如大小写不一致、符号错误等),建议检查并修正这些错误。