数据结构与算法分析——c语言描述 练习3.17 答案
老实说我觉得懒惰删除很坑,如何坑呢?坑在代码的实现,除了删除的函数其他都要麻烦很多。首先要再定义一个listRecord来储存链表的总数据,其次同样的函数要实现2种。例如advance函数,是该返回没有删除的下一个呢还是简单粗暴的返回下一个。链表的函数实现当然是要返回后者,而用户想要的是前者。所以你得实现两遍,而且还要想函数名字。麻烦的不得了,所以我只随随便便实现就算了。
TheDean网友说应该delete应该调用懒惰删除,而不是同时提供真实删除和懒惰删除的函数。影藏内部实现细节。
list.h
typedef int ElementType;
#ifndef _List_H
#define _List_H
struct Node;
typedef struct Node *PtrToNode;
struct ListRecord;
typedef struct ListRecord *List;
typedef PtrToNode Position;
List CreatList();
List MakeEmpty(List