链表--笔记--数据结构(C++版)王红梅--自我思路整理与梳理

看到这篇文的很多人大概都知道链表是个什么玩意了。简单说就是一个又一个的指针,指针之间用指针连接起来。

本文的阅读   适合有c++基础的人群

以下:

这叫做一个结点。

 这就是一个链表。我们主要使用的是第一个结点上面没有数据,后面的结点有数据的链表。(别管为什么了,快试试吧。其实就是为了操作方便且统一)

由于不知道链表里面的数据类型,因此我们用C++中的模板。

template <class T>
struct Node{
    T data;//数据域中的数据
    Node<T> *pnext;//指针域 用来指向下一个结点
};

我们把链表的实现封装成一个类,然后我们一个一个的来实现它。

template<class T>
class LinkList{
    public:
        LinkList();//建立不带数据的头结点
        LinkList(T a[],int n);//建立头结点+把数组中的值变成链表中的值,建立一个单链表
        ~LinkList();//析构函数 把链表中的结点一个个释放
        void PrintList();//遍历单链表
        int Length();//求单链表的长度 并返回单链表的长度(有数据的结点个数)
        T Get(int i);//返回第i个有数据结点的值
        int Locate(T x);//返回数据域是x的那个结点的位置
        void Insert(int i,T x);//在第i个结点处,插入数据域为x的另一个节点
        T Delete(int i);//删除第i个结点,返回被删除结点的值
    private:
        Node<T> *head;//头结点
};

下面是类方法的实现:

template<class T>
LinkList<T>::LinkList() {
    head=new Node<T>;
    head->pnext=NULL;
}

单链表的最后一个结点一定要指向NULL。由于这个是头结点,所以指向NULL。

原文地址:https://www.cnblogs.com/juzijuziju/p/11601521.html