1、【数据结构】线性结构之单链表

单向链表

一、定义:

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

1、定义节点类
//定义节点类
struct Node
{
    Node(const Type x);
    Type data;
    Node *next;
};
2、定义单链表类
class SList
{
public:
    SList();//构造函数
    SList(const SList&s);//拷贝构造函数
    SList &operator=(SList &s);//赋值运算符重载
    ~SList();//析构函数

public:
    //单链表的具体操作
    bool isEmpty();
    int length();
    void reverseList();//逆置
    void printList();//打印链表
    void Clear();
    //void sortList();//排序
    void pushBack(const Type &data);//在尾部插入一个节点
    void popBack();//删除尾节点
    void pushFront(Type data);//头插
    void popFront();//删除头节点\

private:
    Node *head;
    int len;//链表长度
};

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

二、实现:

    单链表的实现方式有很多种,常见的有
        (1)带头结点的单链表
        (2)不带头结点的单链表
        (3)带头节点和尾节点的单链表
    (1)和(2)的主要区别是:
        (1)的头节点是个空节点,其主要作用是指向链表的第一个节点,
        (2)的头结点不是空节点,是整个链表的第一个节点。
        (3)是一个循环链表,即链表的尾节点指向头结点;下面会对各种实现方式进行具体的介绍。
    下面给出单链表几种实现方式的完整示例代码,所有的示例代码工程都是由codeblocks创建和编译的。
带头结点的单链表的C++实现
不带头结点的单链表的C++实现
带头结点和尾节点的单链表的C++实现

猜你喜欢

转载自blog.csdn.net/sinat_33924041/article/details/83345574
今日推荐