1.定义
单链表是由一系列连接在一起的节点构成,其中的每个节点都是一个数据结构。
2.使用方法
单链表的节点通常是动态分配,使用和删除的,即单链表在程序运行时允许增大或缩小。
3.组成
非空单链表的第一个节点为单链表的头;每个节点由一个数据成员和一个指向下一个节点的指针(也被称为后继指针)组成,最后一个节点的后继指针被设置为nullptr表示链表的结束。
4.内存存储方式
链表的每个节点可能分布在内存的各个部分。
5.链表的节点表示方法
template <class T>
struct ListNode
{
T value;
ListNode* next;
}
6.特点
优点:节点在内存非连续性存储,数据的插入或删除效率相对高。
缺点:数据的取值得一个节点一个节点的遍历,耗时长。
7.相关算法
7.1 对链表按照从小到大排序(冒泡法)
// 对链表进行按照冒泡法排序
template <class T>
void Sort(SingleNode<T>* head)
{
SingleNode<T>* p1 = head;
for (; p1->next != nullptr; p1 = p1->next)
{
for (SingleNode<T>* p2 = p1->next; p2 != nullptr; p2 = p2->next)
{
if (p2->data < p1->data)
{
T temp = p1->data;
p1->data = p2->data;
p2->data = temp;
}
}
}
}