2.单链表判空操作
3.销毁单链表
4.清空单链表
5.求单链表表长
6.单链表的取值
7.单链表的查找
7.1按值查找(数据的地址)
7.2按值查找(第几个数据元素)
8.单链表的插入
9.单链表的删除
10.单链表的建立
10.1头插法
10.2尾插法
单链表的初始化(带头结点)
算法步骤:
判空
算法思路:
判断头结点指针域是否为空
销毁单链表
算法思路:
从头指针开始,依 次释放所有结点
清空链表
算法思路:
依次释放所有结点,并将头结点指针域设空
求单链表表长
算法思路:
从首元结点开始依次计数直至最后一个元素
总结
指向头结点 p=L;
指向首元结点p=L->next;i=1;
指向下一结点p=p->next;
取值——取单链表中第i个元素
中找取第i个元素L->elem[i-1]
算法思路:
从头指针开始,顺着链域next逐个结点往下搜索,直至搜索到第i个结点为止,因此,
按值查找分为:1.根据指定数据获取该数据所在的位置(数据的地址)2.根据指定数据获取该数据所在的位置(是第几个元素)
①从第一个结点起,依次和e比较。
③如果查遍整个链表都没有找到和一直相等的元素停止循环返回0/NULL。
时间复杂度:
因为线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为
插入——在第i个结点前插入值为e的新结点
算法步骤:
时间复杂度:
因线性链表不需要移动元素,只要修改指针,一般情况下时间复杂度为
但是O(n)。
删除——删除第i个结点
算法步骤:
时间复杂度:
因线性链表不需要移动元素,只要修改指针,一般情况下时间复杂度为
插入和删除在循环体:
相同点:都是在找第i-1个结点
不同点:插入的循环体条件while(p),删除的循环体条件while(p->next)
while(p)可以取到最后一个,在尾结点插入没有问题
while(p->next)可以取倒数第二个,在删除最后一结点时p->next->next容易指空
头插法(前插法)建立单链表
创建单链表的过程就是动态生成链表的过程,即从空表的初始状态起依次建立各元素结点,并从最后一个结点开始,逐个插入链表。
时间复杂度O(n)
到此这篇单链表实现排序(单链表进行链表排序最好时间复杂度)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qkl-jc/11705.html