最近我在学习链表,本科使用的是谭浩强那本书,你可以说我是先入为主,但是本人觉得这本书是拿来入门的不二人选,所以我看的链表也是拿此书来学的,由于最近同时也在mooc 看浙江大学陈越老师出的数据结构视频,当学到堆栈的时候,就发现了书与视频上不一致的地方,通过陈老师的点拨,瞬间明白了关于头指针的一个问题,故与大家分享之。
一般单链表都有个头指针(有些也可以没有),我在看老谭的书的时候,它里面的头指针基本上装的都是第一个数据,但是我在视频里发现,他们使用头指针的时候,都不是来装载数据,而是作为一个指向第一个数据的指针而存在。两都形式都是可以的,但是经过项目实践,使用第二种方法会更方便,简洁易懂一些,尤其是在处理删除操作的时候,同时,使用第二种方法,删除操作和添加操作函数可以不需要返回头指针,因为头指针没的变过,但是使用第一种方法就有可能因为头指针地址的改变需要返回头指针。例子如下所示:
先看下面两段代码,第一个代码的头指针装的是第一个数据,第二段代码的头指针指向第一个数据: