void merge(LNode *&A,LNode *&B,LNode *&C) //①这里的ABC是头结点的指针域的指针吗?也就是指向开始结点的指针?{ LNode *p=A->next; //②此处A->next按照c语言中理解代表A所指向的开始结点的指针域,那么p等于开始节点的指针域next,那么p指向的不就是开始结点的下一个结点吗,这样下面的第一次循环就不能选取到开始结点的值进行插入了,这里到底应该怎么理解? LNode *q=B->next; LNode *r;
C=A;
C->next=NULL; //③构建新的链表时都要像这样处理吗,这个操作叫什么,是不是类似于c语言中的初始化
free(B);
r=C;
while (p!=NULL && q!=NULL)
{ if(p->data <= q->data) //④第一次循环p指向的是开始节点的data? { //这里是尾插法操作 }
}}
给您看下原题,作者的意思应该ABC是头结点
追答是的,如果程序写成这样,应该头结点是不存数据区的,只是用来指向第一个数据区。
你看一下这个链表的创建函数。
你的理解是对的,这个种链表的头结点不存数据。
你的字写的不错
谢谢您了,分给您了