单链表知识点
上一个知识点   下一个知识点


本节概述 本节知识点 本节总结

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


    在程序中,单链表的结点类型以及变量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;
}