
while(p->next != NULL && p->next->next!= NULL && j < i - 1) /*最终让指针p指向数据元素ai-1结点*/
c语言数据结构删除数据操作,p->next->next是什么意思。intListDelete(SLNode*head,inti,DataType*x)/*删除带头结点的单...
c语言数据结构删除数据操作,p->next->next是什么意思。
int ListDelete(SLNode *head, int i, DataType *x)
/*删除带头结点的单链表head的数据元素ai(0 ≤ i ≤ size - 1)结点*/
/*删除结点的数据元素域值由x带回。删除成功时返回1;失败返回0*/
{
SLNode *p, *s;
int j;
p = head; /*p指向首元结点*/
j = -1; /*j初始为-1*/
while(p->next != NULL && p->next->next!= NULL && j < i - 1)
/*最终让指针p指向数据元素ai-1结点*/
{
p = p->next;
j++;
}
if(j != i - 1)
{
printf("插入位置参数错!");
return 0;
}
s = p->next; /*指针s指向数据元素ai结点*/
*x = s->data; /*把指针s所指结点的数据元素域值赋予x*/
p->next = p->next->next; /*把数据元素ai结点从单链表中删除指*/
free(s); /*释放指针s所指结点的内存空间*/
return 1;
} 展开
int ListDelete(SLNode *head, int i, DataType *x)
/*删除带头结点的单链表head的数据元素ai(0 ≤ i ≤ size - 1)结点*/
/*删除结点的数据元素域值由x带回。删除成功时返回1;失败返回0*/
{
SLNode *p, *s;
int j;
p = head; /*p指向首元结点*/
j = -1; /*j初始为-1*/
while(p->next != NULL && p->next->next!= NULL && j < i - 1)
/*最终让指针p指向数据元素ai-1结点*/
{
p = p->next;
j++;
}
if(j != i - 1)
{
printf("插入位置参数错!");
return 0;
}
s = p->next; /*指针s指向数据元素ai结点*/
*x = s->data; /*把指针s所指结点的数据元素域值赋予x*/
p->next = p->next->next; /*把数据元素ai结点从单链表中删除指*/
free(s); /*释放指针s所指结点的内存空间*/
return 1;
} 展开
展开全部
你理解一下:
在数据结构描述的节点中,p->next有两个意思,一个是表示当前节点的next域所存放的后继节点的地址值,第二个意思是表示描述当前节点的直接后继节点。
在数据结构描述的节点中,p->next有两个意思,一个是表示当前节点的next域所存放的后继节点的地址值,第二个意思是表示描述当前节点的直接后继节点。
展开全部
p->next->next 是指当前节点的下一个结点的下一个结点 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本题所指的是 第i个元素(即元素a[i-1])的下一个元素的下一个元素(即第(i+2)个元素a[i+1])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
=\i
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询