|
一、单链表 单链表通过指针把它的一串存储结点链接成一个链,它的结点由两部分组成,一部分存放线性表结点的数据,另一部分存放指向后继结点的指针。
单链表的存储结构如下图。

在程序中,单链表的结点类型以及变量first说明如下:
struct ListNode
{
ELEM data;
ListNode * link;
};
typedef ListNode * ListPtr;
ListPtr first;
单链表插入算法如下:
// 插入数据内容为value的新结点,为第i个
结点。
ListNode * Insert(ELEM
value, int i)
{
ListNode *p,*q; q =
new ListNode; p =
FindIndex(i-1); if
(p == NULL ) return NULL; q->link = p->link;
q->data = value; p->link = q; if
(q->link == NULL )
last =
q;
return q;
}
单链表删除算法如下:
//
删除由参数link所指定的结点
void
RemoveAfter(ListNode * link)
{
ListNode *newlink=link; if (link !=
NULL)
link =
link->link;
delete newlink;
} |