链表中的结构指针

来源:百度知道 编辑:UC知道 时间:2024/05/03 03:49:14
struct linknode
{
datatype data;
struct linknode *next;
}
void InsList(int i ,char x)
{
linnode *s,*p;
p=head;
int j=0;
while(p!=NULL && j<i)
{
j++;
p=p->next;
}
if(p!=NULL)
{
s=new linnode;
s->data=x;
s->next=p->next;
p->next=s;
n++;
}
else
printf("线性表为空");
}
请问如何理解p->next=s,是不是s等于s->next和s->data呢?

首先,p是一个结构,里面有两个数据成员,data *next;
p->next=s;就相当于,把s赋值给p中的next成员..
s里面也是有两个成员的~~这个你也应该知道~~

将a所指向的节点添加到p所指向的节点后面

一楼正解,补充一下:首先,p是一个结构,里面有两个数据成员,data *next; p->next=s;就相当于,把s这个结构的地址赋值给p中的next成员。s里面也是有两个成员的~~这个你也应该知道~~

程序是将分配的结点空间挂接在当前结点P的后面,操作s->data=x; s->next=p->next;是让s->next指向当前结点P后的一个结点,则s->next与p->next指向同一空间;也就是说到目前为止,原来的链并没有断开;
而操作p->next=s;是让p->next指向S结点而不再指向s->next结点;
建议你看看书上的示意图,那么就不难理解了;

将s作为p的后继