图 双向链表中的结点删除
双向链表的结束条件和单链表相同双向循环链表的结束条件和单向循环链表的结束条件相同
静态链表
根据上节单链表的知识用单链表表示线性表时其结点空间是在运行时根据需要动态分配的利用指针实现线性表的线性关系但在有些语言中不提供指针类型这时我们就无法创建单链表但我们可借助数组来模拟单链表用数组下标相对地表示地址称为静态指针或索引这种链表称之为静态链表首先定义一个结构体记录类型
typedef struct {
DataType data; /*元素*/
int next;/*相对指针*/
} SNode; /*结点类型*/
再定义一个静态链表
#define MAXSIZE /*链表可能的最大长度*/
typedef struct {
SNode sp[MAXSIZE];
int SL; /*静态链表头指针*/
} StList *PStList;
这种链表的结点中也有数据域data和指针域next与前面所讲的链表中的指针不同的是这里的指针是结点的相对地址(数组的下标)因为上面定义的数组中没有下标为的单元所以空指针用表示如下图所示的静态单链表表示线性表(e e e e e)
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []