请哪位高手指点下pascal中的哨兵节点的原理,我总是看不懂哨兵节点为什么在最后稀里糊涂的消失了

来源:百度知道 编辑:UC知道 时间:2024/06/03 20:11:51

1 2 3 4 5
4 out
current: 1 2 3 5
5 out
current: 1 2 3
3 out
current: 1 2
1 out
current: 2

这里给出循环双链表数据结构ADT和实现

假定链表不带哨兵节点。

dlinkedlist.h
typedef int ElementType;
#ifndef DLINKEDLIST_H_INCLUDED
#define DLINKEDLIST_H_INCLUDED
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
List CreateList(ElementType X);
void DisposeList(List L);
int IsEmpty(List L);
int IsLast(Position P, List L);
Position Find(ElementType X, List L);
void Delete(ElementType X, List L);
void Remove(Position P, List * L);
void Insert(ElementType X, List L, Position P);
void DeleteList(List L);
Position NextPosition(Position P);
Position PreviousPosition(Position P);
ElementType Retrieve(Position P);
#endif // DLINKEDLIST_H_INCLUDED

fatal.h
#ifndef FATAL_H_INCLUDED
#define FA