美文网首页
单链表一

单链表一

作者: fuxi | 来源:发表于2016-08-15 08:50 被阅读0次

    单链表样式样式: 头指针--->头结点---->a1---> ... --->an
    头指针:
    指的是链表指向第一个结点的指针,若链表有头结点,那么就会指向这个头结点。一般头指针会被冠以链表的名字,做标识作用。头指针必须存在
    头结点:
    放在第一个元素的结点之前,数据域一般没有意义,有时候可能用来存放链表的长度。有它是为了将头结点的操作和其它节点统一起来。头结点非必须。

    单链表:若指向第i个元素,那么这个结点的数据域是i->data,指针域是i->next,i->next指向下一个元素。
    单链表的读取(时间复杂度为O(n)):
    获得链表第i个元素思路:
    1)要声明一个结点p指向链表的第一个结点,初始化j从1开始。
    2)当j <1,遍历链表,同时p的指针向后移动,指向下一个结点,j+1。
    3)当到了链表末尾p为空时,说明第i个元素不存在
    4)否则查找成功,返回结点p的数据。

    将存储元素为e的结点插入到结点p和p->next之间,p和p->next的存储元素分别为ai和ai+1.
    单链表的插入操作:
    1)声明一个结点p指向链表的头结点,初始化j从1开始
    2)2)当j <1,遍历链表,同时p的指针向后移动,指向下一个结点,j+1。
    3)当到了链表末尾p为空时,说明第i个元素不存在
    4)否则查找成功,在系统中生成一个空的结点s
    5)将数据元素e赋值给s->data
    6)单链表插入两个标准语句,s->next = p->next ,p->next = s;
    7)返回成功

    单链表的删除操作:
    1)声明一个结点p指向链表的头结点,初始化j从1开始
    2)2)当j <1,遍历链表,同时p的指针向后移动,指向下一个结点,j+1。
    3)当到了链表末尾p为空时,说明第i个元素不存在
    4)否则查找成功,将想删除结点p->next赋值给q
    5)单链表的删除标准语句p->next = q->next
    6)将q结点中的数据赋值给e
    7)释放结点q

    分析:单链表中插入和删除的时间复杂度都是O(n),
    相比顺序存储结构似乎并没有什么优势,但是在插入第i个位置的元素时,前一种只是第一次O(n),接下来每次只需移动指针,这时时间复杂度是O(1),而顺序存储结构始终是O(n).所以对于插入和删除月频繁的操作,单链表的优势才会越明显。

    相关文章

      网友评论

          本文标题:单链表一

          本文链接:https://www.haomeiwen.com/subject/gvhusttx.html