单链表上基本操作的实现
1、采用头插法建立单链表
该方法从一个空表开始,生成新节点,并将读取到的数据存放到新结点的数据域中,然后将新结点到当前链表的表头,即头结点之后,如下图:
头插法建立单链表的算法如下:
采用头插法建立单链表,读入数据的顺序与生成的链表中元素的顺序是相反的。每个结点插入的时间为O(1),设单链表长为n,则总的时间复杂度为O(n)。
2、采用尾插法建立单链表
头插法建立单链表的算法虽然简单,但生成的链表中结点的次序和输入数据的顺序不一致。若希望两次次序一致,可采用尾插法。该方法是将新结点插入到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点,如下图:
尾插法建立单链表的算法如下:
因为附设了一个指向表尾结点的指针,故时间复杂度和头插法相同。
3、按序号查找结点值
在单链表中从第一个结点出发,顺时针next域逐个往下搜索,直到找到第i个结点为止,否则返回最后一个结点指针域NULL。
按序号查找结点值的算法如下:
按序号查找操作的时间复杂度为O(n)。
4、按值查找表结点
从单链表第一个结点开始,由前往后依次比较表中各结点数据域的值,若某结点数据域的值等于给定值e,则返回该结点的指针;若整个单链表中没有这样的结点,则返回NULL。
按值查找结点的算法如下:
按值查找操作的时间复杂度为O(n)。
来自王道论坛(推荐购买正版),交流学习,每天一点点,有问题和建议在留言板留言~~
qq群号:
群一:176792348
群二:262739638
群三:274526397
群功能:方便大家互相交流~~群文件中各种建模资料~~
ps:数据结构