单链表的头插入
L->next=NULL;
p->next=L->next;
L->next=p;
---------------------------------------
单链表的尾插入
L->next=NULL;
r=L;
p->next=NULL;
r->next=p;
r=p;
---------------------------------------
如何理解这每条语句的含义呢
单链表的头插入: L是头结点, p是插入结点,
假设: 链表结构为 L->A->B...
L->next=NULL; // 这条语句有问题, 头结点插入是不需要这句的, 否则.p->next=L->next就都等于null了;---------------------------------------
单链表的尾插入:L是尾结点,p是插入结点,r为标记末尾结点
假设: 链表结构为 ..A->B->L
L->next=NULL; //末尾结点没有下个结点, 即next指向null你理解错了, L->next 是L指向它下个节点的指针. 而不是下个节点的名称叫next.
L->next=NULL; 是将next指针置为NULL, 即表示L节点没有next节点.
r=L: 是赋值, 表示r指针和L指针地址一样. 即r 和 L 都指向同一个节点.
请问您可以加Q吗,大的就这两个插入法的问题,其中的小问题都是似懂非懂,
追答公司不给上Q, 你自己多了解下节点指针的作用, next指针作用有点类似于画图中的箭头"--->"
追问L->a->b->c
这L,a,b,c,就是结点对吧
对, 就是这样.
L 下个节点为 a : 即用 L->next=a 来表达.
a 下个节点为 b: 即用 a->next=b 来表达.
如果c为末尾, 没有下个节点, 则用 c->next=NULL 来表达.
也就是说:
L->next=a;说明,L是a的前一个结点;
那么
L->next=a->next;
怎么理解呢
你要明白一个链表节点L是有两个指针, 一个L指向本身链表节点, 一个L->next指向下个链表节点.
所以r=L 是表示r 和L指向同一个链表节点, 而不是说r 指向L.
至于 r->next 是否设置为NULL; 需要看实际需求.
那么r->next=p,实质是将L结点与p结点链接起来,从而使L->next=p,这样理解对吗
追答不好意思, 有个地方说错了.
L->next=NULL; // 这条语句没有问题, 这是链表只有1个L节点的情况
p->next=L->next;
L->next=p;
我不理解的是
L->next=NULL;
p->next=L->next;
L->next=p;
这每条语句的含义,
您能给我解译一下吗