单链表及双链表总结

介绍

线性表的链式存储结构,指的是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。


链表(Linked List),动态存储分配,运行时分配空间。

存储特点:

  1. 逻辑次序和物理次序不一定相同。
  2. 元素之间的逻辑关系用指针表示

单链表

单向链表是链表的一种,它由节点组成,每个节点都包含下一个节点的指针。


结点结构

数据域 data,存储数据元素
指针域 next,存储指向后继节点的地址

特点节点的连接方向是单向的;相对于数组来说,单链表的随机访问速度较慢,但是单链表删除/添加数据的效率很高


双链表

双向链表是链表的一种。和单链表一样,双向链表也是由节点组成,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个节点开始,都可以很方便地访问它的前驱节点和后继节点。一般我们都构造双向循环链表。

结点结构

数据域 data,存储数据元素
指针域 prev,存储指向前驱节点的地址

next,存储指向后继节点的地址




————————————————————————————————————————————————————————————————————————————

单向链表及其操作示例

单向链表的示意图

在单链表的第一个元素结点之前附设一个类型相同的结点,以便空表和非空表处理统一,并且可统一对任意位置的结点的操作实现。


删除结点


添加结点




—————————————————————————————————————————————————————————————————————————————

双向链表及其操作示例

双链表的示意图


删除结点


添加结点




—————————————————————————————————————————————————————————————————————————————

算法实现

C++实现单链表

头文件LInkedList.h

#ifndef LINKED_LIST
#define LINKED_LIST

#include<iostream>
using namespace std;

template<class T>
struct DNode
{
	public:
		T value;
		DNode *next;
	public:
		DNode(){}
		DNode(T t, DNode *next)
		{
			this->value = t;
			this->next = next;
		}
};

template<class T>
class LinkedList
{
	public:
		LinkedList();
		~LinkedList();
		
		int size();
		bool is_empty();
		
		T get(int index);
		T get_first();
		T get_last();
		
		bool insert(int index
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值