链表总结
通过做链表的相关习题,加深了我对链表的认识,用链表来体现元素之间的逻辑关系简单明了。在链表的操作中,主要有增删查改等。做完这些题后,我主要收获了一下几点:
①在链表中,知道某个结点后,容易用该结点表达下一个结点,但不能利用该结点表达前一节点,这点是单链表的题目中的主要障碍。因此在某些题目中,可以考虑把注意中心放在head->next上,这样在删除和增加等操作中可以避免无法表达前一结点的尴尬局面。
②在链表的操作中,一定要时时刻刻注意某些操作对下一步操作中的结点的影响,要考虑在该操作中,是否改变了其他结点原有的指针。
③要注意头结点的保留,这样才能在最后返回完整的链表。
④在链表的删除操作中,一般只是改变head->next的指向,然后delete要删除的结点,但要注意的是,在没有头指针,有头结点的情况下,删除头结点的方法与删除链表中的结点的方法有所区别。head的前面没有结点,因此只能将head移动到下一结点,然后再删除原来的头结点。
⑤在做题中要学会脑洞大开,不要一味地按照一眼就能看出来的方法做题,这样做出来的题往往繁琐,复杂度高。比如在链表的排序中,可以新建一个链表,然后通过比较旧链表与新链表的结点大小,将旧链表中的结点插入到新链表中的合适位置。再比如链表加和问题,可以用两个链表的数值和创建一个新链表。总之,可以将难以解决的问题通过创建新链表来解决。
⑥要特别注意链表操作中的细节问题。比如链表为空时怎么处理,到何时跳出循环等等。