算法创作|单链表的基本操作

简介: 算法创作|单链表的基本操作

问题描述

单链表是链表的一种,是一种链式存取的数据结构。用一组地址任意的存储单元存放线性表中的数据元素,链表中的数据是以结点(node)来表示的,每个结点的构成包括数据域(date)和指针域(next)两个部分,数据域里存储的是当前结点的数据,指针域能得到该结点的下一结点。

单链表的特点是链表的连接方向是单向的,对链表的访问要通过顺序读取从头部开始。

                       【图1

它的优点是可以克服顺序线性表需要预先知道数据大小的缺点,充分利用内存空间,实现灵活的内存动态管理;同时数据元素不需要按顺序存储,还方便进行插入、删除等操作;缺点是查找某个特定结点时速度比顺序存储慢,而且增加了结点的指针域,空间开销较大。


解决方案

例(1):结点P的赋值操作:

                       【图2

p. data=10    p.next=q

 q. data=20   q. next=None

【图1】中,若P=n2,则Pn2等价;若P=P. next,则P就移动到了n3

即:p=head

    p=p. next=n1

    p=p. next=n2

    ……

例(2):结点P的移动:

P的初始位置为head,要让P移动到第i个结点,则:

p=head

for k in range (i):

  p=p. next

此时P为单链表的第i个结点。

P的初始位置在head,让P指向单链表的最后一个结点,则:

p=head

while p != None :

       p=p. next

       print (p.data)

此时PNone

例(3):单链表的插入算法:包括尾插法、前插法、任意位置插入法。重点为前两个。

○尾插法:若当前链表尾结点为P,新插入q结点,则 p. next=q , q. next=None。如果让P仍为尾结点,则p=p. next

○头插法:

若只知头结点head,在头结点和第一个结点之间新插入结点q,则:

q. next=head. next

 head.next=q

(先安排q后面的结点,再安排q前面的结点)

例(4):删除操作:

P为链表的第i-1个结点,删除第i个结点,则:

p. next=p. next.next

例(5):合并操作:


设法实现两个单链表的合并操作,则:

p=head1

while p. next !=None :

       p=p. next

  p. next = head2. next

(链表1的最后一个结点的next为链表2的第一个结点)


结语

本文主要围绕单链表的定义、特点、优缺点、符号表示、以及基本操作(赋值、移动、插入、删除、合并)等问题展开,进行了初步的基础学习。我们发现这些代码易看懂但不易自己写出来,有些眼高手低纸上谈兵,知识掌握不全面且不熟练,希望下次能有所进步。


目录
相关文章
|
3月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
81 1
|
3月前
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
56 0
|
3月前
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
56 0
|
3月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
36 0
|
3月前
|
存储 算法
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
120 0
|
3月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
58 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
2月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
3月前
|
存储 缓存 算法
经典算法之链表篇(三)
经典算法之链表篇(三)
|
3月前
|
算法
经典算法之链表篇(二)
经典算法之链表篇(二)

热门文章

最新文章

下一篇
开通oss服务