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

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

问题描述

单链表是链表的一种,是一种链式存取的数据结构。用一组地址任意的存储单元存放线性表中的数据元素,链表中的数据是以结点(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的第一个结点)


结语

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


目录
相关文章
|
8天前
|
算法
【优选算法专栏】专题九:链表--------两两交换链表中的节点
【优选算法专栏】专题九:链表--------两两交换链表中的节点
18 0
|
8天前
|
存储 算法 前端开发
数据结构与算法:双向链表
朋友们大家好啊,在上节完成单链表的讲解后,我们本篇文章来对带头循环双向链表进行讲解
|
8天前
|
存储 算法 索引
数据结构与算法:单链表
朋友们大家好,本节来到数据结构与算法的新内容:单链表 在上篇文章中,我们知道顺序表通常需要预分配一个固定大小的内存空间, 通常以二倍的大小进行增容,可能会造成空间的浪费,本篇文章我们介绍的链表可以解决这个问题
|
8天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
31 0
|
2天前
|
存储 缓存 算法
数据结构与算法⑦(第二章收尾)带头双向循环链表的实现(下)
数据结构与算法⑦(第二章收尾)带头双向循环链表的实现
6 0
|
2天前
|
存储 算法
数据结构与算法⑦(第二章收尾)带头双向循环链表的实现(上)
数据结构与算法⑦(第二章收尾)带头双向循环链表的实现
12 0
|
2天前
|
算法 搜索推荐 索引
数据结构与算法⑥(第二章OJ题,下)后八道链表面试题(下)
数据结构与算法⑥(第二章OJ题,下)后八道链表面试题
6 0
|
2天前
|
算法 程序员 索引
数据结构与算法⑥(第二章OJ题,下)后八道链表面试题(中)
数据结构与算法⑥(第二章OJ题,下)后八道链表面试题
13 0
|
2天前
|
算法 C语言 C++
数据结构与算法⑥(第二章OJ题,下)后八道链表面试题(上)
数据结构与算法⑥(第二章OJ题,下)后八道链表面试题
12 0
|
2天前
|
算法 测试技术
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题(下)
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题
9 0