huihut/interview

链表的代码好像错了

a74731248 opened this issue · 7 comments

在数据结构的链式结构里的linklist with head中,enqueue_Lq函数里,当L==null和当l->next ==null的逻辑是不是错了

Sent from PPHub For GitHub

没错吧,EnQueue_LQ 是分三种情况:L为空、L只有一个头结点,L头结点后还有其他结点,分别处理。

请问哪里有问题呢?

79行当L为空时将q赋给L->next,第81行当L只有一个头结点时将q赋给L;我觉得这里是不是应该反过了了呀,还是说我理解错了

噢噢,只有一个头结点的时候错了,应该是

else if (NULL == L->next) L -> next = q;

L为空的时候,创建一个头结点,然后就和只有一个头结点一样处理(L -> next = q),这个应该没问题。

谢谢了,还有什么地方有问题吗?

为什么当L==NULL时不让L=q呢?如果是按照现在的代码,L->next=q的话,当L==NULL时,L的data是空的对吗

因为如果当L==NULL时让L=q,这就没有头结点了,为了保证链表有头结点,必须创建个data为空的头结点(L = (LNode *)malloc(sizeof(LNode))),然后其next指向第一个结点(L -> next = q

噢好的,谢谢啦

也感谢指出,关闭了。