关于单链表的尾插入法若干疑问
typedef struct node{
char data;
struct node *next;
}SNode;
void CreateListR(SNode *&L,char a[],int n)
{
SNode *s,*r;
int i;
L=(SNode *)malloc(sizeof(SNode));
L->next=NULL;
r=L;
for(i=0;i<n;i++)
{
s=(SNode *)malloc(sizeof(SNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
---------------------------------------------------------------------------------------
红色部分表示r被赋值了2次,请问,这两次地址,是后一次覆盖前一次的还是同时存在?
我这样认为的原因是,r没有被分配内存,如果分配内存,只能存放一个地址,对吗?
另外一个是r->next=s; 是把s的地址,赋值给r的next成员
紧接着下面的r=s;又是为什么? s的地址不是已经赋值给r了吗?